理想情况下,我希望对无线网络的信号强度进行近乎实时的监测,比如每隔100ms监测一次,但如此高的频率可能有些过分了。
我正在使用Managed Wifi库来轮询RSSI。我实例化了一次WlanClient client = new WlanClient();,然后重用该client来测量信号强度(但我想更频繁地这样做):
foreach (WlanClient.WlanInterface wlanInterface in _client.Interfaces)
{
Wlan.WlanBssEntry[] wlanBssEntries = wlanInterface.GetNetworkBssList();
foreach (Wlan.WlanBssEntry wlanBssEntry in wlanBssEntries)
{
int sigStr = wlanBssEntry.rssi; // signal strength in dBm
// ...
}
}最快的实际轮询延迟是多少?这是测量信号强度的最佳方法吗?
发布于 2010-10-04 21:14:18
我担心最小的轮询延迟会随着你的驱动程序栈的不同而不同,但我猜也会随着接入点的数量而变化。WiFi是一种基于时隙的协议。
从我(有限的)经验来看,1秒的间隔是正确的,你会看到站点列表并不总是完整的(即第一次扫描时丢失的站点,下一次扫描时返回)。
这是测量信号强度的最佳方法吗?
视情况而定,但您预计它会以多快的速度发生变化?在四处走动时,信号在一秒钟内不会有太大变化。
发布于 2010-10-04 21:08:29
对于大多数你想要监控任何东西的情况,一个合理的指导方针是找出尽可能少的东西来实现你的目的,然后将频率提高一点,以捕捉延迟和意外的峰值。
例如,如果你打算向用户显示,那么每半秒超过一次就意味着更改太快,用户无法理解,所以大约四分之一秒应该足以确保您捕获到了所需的所有内容。
如果您正在记录日志,则这取决于您的日志周期将持续多长时间。每几分钟一次可能会捕捉到任何严重的问题时间,所以一分钟一次就可以了。
总而言之,虽然通常有一些实际的最大频率,但除非最大有用频率更高,否则不值得考虑,这取决于您的目的。
https://stackoverflow.com/questions/3855206
复制相似问题