如何将Wifi信号强度从质量百分比(通常为0%到100%)转换为RSSI值,通常为负dBm数(即-96db)?
Dav*_*arl 60
Microsoft在其WLAN_ASSOCIATION_ATTRIBUTES结构中定义了Wifi信号质量,如下所示:
wlanSignalQuality:
表示网络信号质量的百分比值.WLAN_SIGNAL_QUALITY的类型为ULONG.该成员包含0到100之间的值.值0表示实际RSSI信号强度为-100 dbm.值100意味着实际RSSI信号强度为-50dbm.您可以使用线性插值计算wlanSignalQuality值在1到99之间的RSSI信号强度值.
RSSI(或" 无线电(接收)信号强度指示器 ")以"dB"(分贝)或类似的"dBm"(dB/cmw)为单位(参见dB与dBm),其中较小的负数具有最高的信号强度或质量.
因此,quality(百分比)之间的转换dBm如下:
quality = 2 * (dBm + 100) where dBm: [-100 to -50]
dBm = (quality / 2) - 100 where quality: [0 to 100]
Run Code Online (Sandbox Code Playgroud)
伪代码(带示例钳位):
// dBm to Quality:
if(dBm <= -100)
quality = 0;
else if(dBm >= -50)
quality = 100;
else
quality = 2 * (dBm + 100);
// Quality to dBm:
if(quality <= 0)
dBm = -100;
else if(quality >= 100)
dBm = -50;
else
dBm = (quality / 2) - 100;
Run Code Online (Sandbox Code Playgroud)
注意:
Quality仔细检查您用于计算的定义.还要检查dB(或dBm)的范围.限制可能会有所不同.
示例:
Run Code Online (Sandbox Code Playgroud)Medium quality: 50% -> -75dBm = (50 / 2) - 100 Low quality: -96dBm -> 8% = 2 * (-96 + 100)
小智 5
根据经验:
以下内容不足以支持Apple设备
我很高兴找到这个帖子,因为我正在寻找一种将dbm转换为百分比的方法。在David的帖子中,我用python编写了一个快速脚本来计算质量百分比。
#!/usr/bin/env python3
import os
import platform
system = platform.system()
if system == 'Linux':
cmd = "iwconfig wlan0 | grep Signal | /usr/bin/awk '{print $4}' | /usr/bin/cut -d'=' -f2"
elif system == 'Darwin':
cmd = "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep CtlRSSI | awk '{ print $NF; }"
else:
print("Unsupported os: {}".format(system))
dbm = os.popen(cmd).read()
if dbm:
dbm_num = int(dbm)
quality = 2 * (dbm_num + 100)
print("{0} dbm_num = {1}%".format(dbm_num, quality))
else:
print("Wifi router connection signal strength not found")
Run Code Online (Sandbox Code Playgroud)
为了从计算机所在的位置获得最高的wifi质量,我移动/旋转了天线,直到获得最高质量。为了查看实时质量,我使用以下命令运行了上述脚本:
watch -n0.1 "python getwifiquality.py"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83349 次 |
| 最近记录: |