2

我正在使用 Mac OS X 的 CoreWLan 框架从接入点读取 RSSI 值。

我可以通过两种不同的方式做到这一点:

使用接口(连接到我的网络)

currentInterface = [CWInterface interface];
[currentInterface rssivalue];

使用网络:

currentInterface = [CWInterface interface];
networks = [[currentInterface scanForNetworksWithName:@"mySSID" error:nil] allObjects];
[networks[0] rssiValue];

但是,这两种方法(由于接口连接到网络,应该给出相同的值)似乎给出了不同的结果。后一种方法似乎始终给出比接口方法强 3-5 dB 的值。

关于为什么会发生这种差异的任何想法?哪个更“合法”?

4

1 回答 1

3

当前接口的 rssiValue 属性(第一种情况)为您提供聚合rssi。而扫描结果的 rssiValue (第二种情况)为您提供scan 时刻的 rssi 值。这就是为什么通常第一个少于第二个的原因。但有时由于某些干扰,您会在扫描结果中看到非常低的 rssi 值。

还有另一件事:具有相同 ssid 的接入点可能很少,在这种情况下,您不能确定 network[0] 将是当前连接的接入点的结果。您应该首先检查 bssid 值。

于 2013-05-29T05:50:15.027 回答