我正在尝试重新创建当前Wi-Fi网络显示的信息,当选项单击Wi-Fi状态栏项时。显示的一个参数是MCS索引,但是我找不到任何方法使用CWInterface类查询该值,这是我获取其他大多数数据的地方:

if let interface = CWWiFiClient.shared().interface() {
    rssi = interface.rssiValue()
    noise = interface.noiseMeasurement()
    // etc.
}

由于Wi-Fi状态栏项和机场命令行工具都显示MCS索引,似乎应该有某种方法来查询它:
MacBook:~ mark$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
     agrCtlRSSI: -46
     agrExtRSSI: 0
    agrCtlNoise: -90
    agrExtNoise: 0
          state: running
        op mode: station
     lastTxRate: 878
        maxRate: 1300
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: xx:xx:xx:xx:xx:xx
           SSID: MyWiFi
            MCS: 7
        channel: 149,80

我还发现了一些Python sample code似乎表明MCS索引应该是可用的,但在文档或代码完成中看不到它。
有没有什么方法可以通过核心WLAN或其他框架获得这个价值,或者这是我需要根据其他价值计算的东西?

最佳答案

我找到了另一个Python脚本wifi_status.py
报告WiFi状态。从台词中

def wifi_status(properties=('bssid', 'channel', 'txRate', 'mcsIndex', 'rssi', 'noise')):
    xface = CWWiFiClient.sharedWiFiClient().interface()
    while True:
        yield({name: getattr(xface, name)() for name in properties})

我们可以得出结论,这些属性可以通过
键值编码。
这真的很管用:
if let iface = CWWiFiClient.shared().interface() {
    if let mcsIndex = iface.value(forKey: "mcsIndex") as? Int {
        print(mcsIndex)
    }
}

但我现在知道如果这种方法得到官方支持,
或者将来会有用的,所以使用的风险由你自己承担。

关于swift - 核心WLAN MCS索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48129952/

10-13 04:38