没有使用AT命令我们怎么能得到3G调制解调器的信号强度? NetworkManager的gdbus对象没有像getSignalStrength
这样的方法。 networkingpipe理员正在locking设备文件以防止使用AT命令。
nm-applet能够在系统托盘中显示信号强度。 所以应该有一种方法来获得networkingpipe理员的信号强度!
nmcli
是nm-applet的命令行计数器部分。 我nmcli
获得信号强度吗? 手册中没有提到信号强度。
终于得到了答案!
在c ++中使用libnm-glib来执行dbus代理。 从命令行使用..
gdbus call --system --dest org.freedesktop.ModemManager --object-path /org/freedesktop/ModemManager/Modems/0 --method org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality
给你gsm调制解调器的信号强度。
如果MM说连接时无法获得信号质量,那是因为所有命令和数据只有一个AT端口。 所以当AT口连接时,不能发送AT命令来收集信号质量。 您需要使用更多AT端口获得更好的调制解调器,或者切换到非AT调制解调器,如QMI或MBIM供电的调制解调器。 – Aleksander Morgado
一个可以听org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality
信号使用
gdbus monitor --system --dest org.freedesktop.NetworkManager --object-path /org/freedesktop/NetworkManager/Modems/0
问:代理信号是否每次都异步改变信号强度,或者ModemManager定期轮询调制解调器以获得信号质量?
答:这取决于使用的调制解调器; 如果调制解调器支持未经请求的质量改变指示,我们将使用它们; 否则MM将每30秒查询一次信号质量值。 一旦我们得到新值(或多或少),接口中的属性值将被更新。 – Aleksander Morgado
NetworkManager使用ModemManager进行移动宽带调制解调器控制。 您可以查看ModemManager ,而不是查看NetworkManager DBus API,这将实际公开连接/注册详细信息,包括信号质量。
如果使用C ++开发一个应用程序来从调制解调器收集信息,我建议使用libmm-glib (基于GLib的库)透明地访问ModemManager DBus API(即不需要知道DBus)。
我正在做一个家庭作业,在这个作业中,我必须通过建筑物中接入点的信号强度来确定室内的位置。 我正在使用
iwlist wlan0扫描
命令,以便看到附近接入点的信号强度。 然后我在Bash中处理它的输出并将其重定向到C ++可执行文件,这在Bash中很容易。 我希望这会帮助你。