如何在C ++ Linux中获得3g调制解调器信号强度? [英] how to get 3g modem signal strength in c++ linux?

查看:243
本文介绍了如何在C ++ Linux中获得3g调制解调器信号强度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在不使用AT命令的情况下,如何获得3g调制解调器的信号强度? NetworkManager的 gdbus对象没有像getSignalStrength这样的任何方法. 网络管理员正在锁定设备文件,阻止使用AT命令.

纳米小程序能够显示系统托盘中的信号强度.因此应该有一种方法可以从网络管理器获取信号强度!

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定期轮询调制解调器以获得信号质量?

A.这取决于所使用的调制解调器.如果调制解调器支持不请自来的 质量变化指示,我们将使用它们;否则MM将对每个 信号质量值的30秒.接口中的属性值将 一旦获得新值(或多或少),就进行更新. -亚历山大·莫尔加多(Aleksander Morgado)

without using AT commands how can we get signal strength of 3g modem? The gdbus object for NetworkManager don't have any method like getSignalStrength. Network manager is locking device file preventing to use AT commands.

nm-applet was able to display signal strength in system tray. so there should be a way to get signal strength form network manager!

nmcli is command line counter part of nm-applet. Can i get signal strength using nmcli? nothing about signal strength is mentioned in its man pages.

解决方案

Finally got the answer!

In c++ use libnm-glib to act on dbus proxy. From command line use..

gdbus call --system --dest org.freedesktop.ModemManager --object-path /org/freedesktop/ModemManager/Modems/0 --method org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality

gives u the signal strength of gsm modem.

If MM says it cannot get signal quality while connected, it's because there is only one AT port for all command and data. So when the AT port is connected, no AT commands can be sent to gather signal quality. You'll need to either get a better modem with more AT ports, or switch to a non-AT modem, like a QMI or MBIM powered one. -- Aleksander Morgado

One can listen to org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality signal using

gdbus monitor --system --dest org.freedesktop.NetworkManager --object-path /org/freedesktop/NetworkManager/Modems/0

Q. Does the proxy signals everytime there is a change in signal strength asynchonously or ModemManager polls modem periodically to get signal quality?

A. That depends on the modem being used; if the modem supports unsolicited quality change indications, we'll use them; otherwise MM will poll every 30s for signal quality values. The property values in the interface will be updated once we get the new values (more or less). -- Aleksander Morgado

这篇关于如何在C ++ Linux中获得3g调制解调器信号强度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆