如何使用Qt获取WiFi信号强度?

10

目前,我能够使用QNetworkConfigurationManager::allConfigurations()扫描所有可用的Wifi网络,但每个Wifi网络的QNetworkConfiguration数据中都没有Wifi信号强度。请问您如何获取这些数据?谢谢!


2
你的目标平台是哪个? - fadedreamz
3
我认为这需要本地代码。 - Frank Osterfeld
2
看起来这个函数只能返回当前使用的网络连接的信号强度,也就是说你必须连接上它。 - Tim Meyer
@TimMeyer 是的,确实如此。我的目标是枚举所有的WiFi热点,然后通过某些API获取每个热点的信号强度。 - aaa
1
@aaa:QSystemNetworkInfo 属于移动性框架,虽然你可以让它们在桌面操作系统上运行,但不能保证它们能够正确运行。你可能会发现,实际上采用原生系统代码获取信号强度更容易。 - Nicholas Smith
显示剩余3条评论
2个回答

3
您可以使用QProcess运行命令行命令来扫描WiFi网络。使用正则表达式解析包含WiFi网络所有细节的命令行输出。
如果您使用的是Linux,则命令为"iwlist scan"。

现在的方式是 iw wlan0 scan :-) 这是我在Qt中测试 WLAN 网卡的方法。 - yegorich

2
我不确定你是否可以在普通桌面上完成这个任务(我指的是只使用Qt)。Qt没有常见接口来获取此类信息。我不确定你使用的是哪个操作系统,但最好的方法是与操作系统链接并从中获取信息,或直接通过驱动程序与设备通信。这两种方法都很困难,特别是因为你需要文档,而且:

  • 对于第一种方法,通过驱动程序进行链接 - 这仅适用于特定的驱动程序,除非信号强度以通用方式报告给许多驱动程序。
  • 对于第二种方法,通过系统进行链接 - 可能会存在Linux发行版之间的轻微差异,这可能导致应用程序无法在它们之间进行移植。Windows和Linux也是如此,没有保证(甚至我会说是“方法”,但我不确定...)两个系统使用相同的方法向用户报告信号强度。

不管你决定做什么,你可以使用标准操作系统功能来完成目标。例如,在Windows中,你可以使用 WlanGetAvailableNetworkList()。据我记得,它将提供称为IRSSI的直接信号强度指示器 :)

享受吧 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接