在 ac 程序中使用 linux 的无线工具,我进行了网络扫描,希望找到每个检测到的网络的信号强度 (dBm)。
我在wireless.h中找到了以下内容:
struct iw_quality
{
__u8 qual; /* link quality (%retries, SNR,
%missed beacons or better...) */
__u8 level; /* signal level (dBm) */
__u8 noise; /* noise level (dBm) */
__u8 updated; /* Flags to know if updated */
};
我在我的 C 程序中打印出“级别”,如下所示:
printf("Transmit power: %lu ", result->stats.qual.level);
也尝试了%d,但得到了相同的输出。
我得到的结果是看起来像178、190、201、189等的数字......
这些数字是否有可能以瓦特为单位?根据 watt->dBm 转换器,大约 178 瓦。52.50dBm ?
我应该得到什么?因为我认为 dBm 转换为 -80dBm 之类的。
我需要转换这些数字吗?如何获得正确的输出?
谢谢!!
=======更新=========
我注意到一些奇怪的行为。当我通过我的程序使用 wireless.h 的 level 属性时,我记录的“最强”值约为 -50dBm,而使用同一路由器,当我运行“iw wlan0 scan”时,我收到的最强值约为 -14dBm信号。
有谁知道导致这种差异的原因是什么?