【问题标题】:Get Rssi Value From Windows从 Windows 获取 Rssi 值
【发布时间】:2012-06-01 08:47:18
【问题描述】:

我想测量调制解调器的 rssi 值。是否有任何 api 可以获取 Windows 的 rssi 值?我曾经在 android 中使用 Wifi.Manager 进行此操作。但我找不到任何适用于 Windows 的 api

【问题讨论】:

  • 您是在向 RSSI 询问您的 WiFi 还是其他设备?此设备如何连接到您的 Windows 机器?
  • wifi 是的。我想读取笔记本电脑 wi-fi 芯片的 rssi 值。

标签: windows rssi


【解决方案1】:

使用本机代码是最好的。您将需要将 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#

【讨论】:

【解决方案2】:

由于此问题出现在主页上以供审核 - 现有答案已过时。 现在有一个Managed Wifi API 可用作Windows Native Wifi API 的包装器。

信号强度百分比和 RSSI 可以通过以下方式获得: Wlan.WlanAvailableNetwork[] 网络 = 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);
 } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多