4

理想情况下,我想近乎实时地监控无线网络的信号强度,比如每 100 毫秒,但如此高的频率可能有点过分了。

我正在使用托管 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
        // ...
    }
}

最快的实际轮询延迟是多少,这是测量信号强度的最佳方法吗?

4

2 回答 2

1

恐怕最小的轮询延迟会因您的驱动程序堆栈而异,但我也怀疑周围接入点的数量。WiFi是一种基于时隙的协议。

根据我的(有限)经验,1 秒的间隔大约是正确的,您已经看到电台列表并不总是完整的(即在 1 次扫描中缺少电台,在下一次扫描时返回)。

这是测量信号强度的最佳方法吗?

取决于,但你预计它会以多快的速度改变?走动时,信号在一秒钟内不会有太大变化。

于 2010-10-04T13:14:17.793 回答
0

在大多数情况下,如果您想监控任何事情,一个合理的指导方针是找出尽可能少的事情来实现您的目的,然后将频率提高一点,以捕捉延迟和意外尖峰。

例如,如果您要向用户显示此内容,那么每半秒不止一次将意味着更改太快,用户无法有意义地理解,因此大约四分之一秒应该绰绰有余以确保您能捕捉到所需的一切。

如果您正在记录,那么这取决于您的记录期将持续多长时间。每几分钟一次可能会发现任何严重的问题时间,所以每分钟一次就可以了。

总而言之,虽然通常有一些实际的最大频率,但除非最大有用频率更高,否则不值得考虑,这取决于您的目的。

于 2010-10-04T13:08:29.223 回答