我想测量调制解调器的 rssi 值。是否有任何 api 来获取 Windows 的 rssi 值?我曾经在 android 中使用 Wifi.Manager 来做到这一点。但我找不到任何适用于 Windows 的 api
问问题
12160 次
2 回答
0
使用本机代码是最好的。您需要将 WlanQueryInterface() 与 wlan_intf_opcode_rssi 操作码一起使用,这将返回 RSSI 值作为 LONG 数据类型。从那里您可以将其转换为 dbm。
DWORD WINAPI WlanQueryInterface(
__in HANDLE hClientHandle,
__in const GUID *pInterfaceGuid,
__in WLAN_INTF_OPCODE OpCode,
__reserved PVOID pReserved,
__out PDWORD pdwDataSize,
__out PVOID *ppData,
__out_opt PWLAN_OPCODE_VALUE_TYPE pWlanOpcodeValueType
);
在这里使用操作码 wlan_intf_opcode_rssi 您将获得 RSSI 值:
WLAN_INTF_OPCODE >> wlan_intf_opcode_rssi >> LONG
这是有关如何开始的 C++ 示例:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms706765(v=vs.85).aspx
如果你想要 C# 试试这个: How to get SSID and RSSI for Win7 using C#
于 2012-05-25T19:44:12.380 回答
0
由于此问题出现在主页上以供审查 - 现有答案已过时。现在有一个Managed Wifi API可用作Windows Native Wifi API的包装器。
信号强度百分比和 RSSI 可以通过以下方式获得: Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0);
Wlan.WlanBssEntry[] redes = wlanIface.GetNetworkBssList(); //Get the atribute that you need
foreach (Wlan.WlanBssEntry network in redes)
{
Console.Write("Network SSID {0} RSSI {1}\n ", GetStringForSSID(network.dot11Ssid),
network.rssi);
}
于 2019-01-03T15:48:08.540 回答