我正在尝试在 Windows 7 机器上使用 c++ 获取连接的 wifi 信号的强度。
我可以使用命令获取信号强度的值,WlanGetAvailableNetworkList
但返回的值对于我们的要求来说不够精细。基本上,当您离开 Wifi 路由器时,值会以 20% 的增量跳跃(99% -> 80% -> 60% 等)。
对于我们正在开发的应用程序,我们确实需要一个更准确的值。我知道这是可能的,因为我在窗口中看到应用程序显示准确的信号强度 dBm 值......
如果有人有任何建议,他们将不胜感激!
dwResult = WlanGetAvailableNetworkList(hClient,&pIfInfo->InterfaceGuid,0,NULL,&pBssList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanGetAvailableNetworkList failed with error: %u\n", dwResult);
dwRetVal = 1;
} else {
for (j = 0; j < pBssList->dwNumberOfItems; j++) {
pBssEntry = (WLAN_AVAILABLE_NETWORK *) & pBssList->Network[j];
if ((pBssEntry->dwFlags & WLAN_AVAILABLE_NETWORK_CONNECTED ) != 0 ){
if (pBssEntry->wlanSignalQuality == 0)
iRSSI = -100;
else if (pBssEntry->wlanSignalQuality == 100)
iRSSI = -50;
else
iRSSI = -100 + (pBssEntry->wlanSignalQuality/2);
wprintf(L" Signal Quality[%u]:\t %u (RSSI: %i dBm)\n", j,
pBssEntry->wlanSignalQuality, iRSSI);
}
}