我正在尝试在Windows 7机器上使用C ++获取已连接WiFi信号的强度。
我可以使用命令WlanGetAvailableNetworkList
获取信号强度值,但返回的值对我们的要求不够细致。基本上,随着您远离WiFi路由器,该值会以20%的增量跳动(99% -> 80% -> 60%等)。
对于我们正在开发的应用程序,我们确实需要更精确的值。我知道这是可能的,因为我在Windows中看到了显示信号强度精确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);
}
}