从 Windows 获取 rssi 值



我想测量调制解调器的rssi值。是否有任何 API 可以获取 Windows 的 rssi 值?我曾经在Android中使用Wifi.Manager这样做。但是我找不到任何适用于Windows的API

使用本机代码是最好的。您需要将 WlanQueryInterface() 与wlan_intf_opcode_rssi操作码一起使用,这将以 LONG 数据类型返回 RSSI 值。从那里您可以将其转换为 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#,试试这个:如何使用 C# 获取 Win7 的 SSID 和 RSSI

由于这个问题出现在主页上进行审查 - 现有的答案已经过时了。现在有一个托管的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);
 } 

最新更新