【问题标题】:how to get 3g modem signal strength in c++ linux?如何在 c++ linux 中获取 3g 调制解调器信号强度?
【发布时间】:2013-06-23 17:09:53
【问题描述】:

不使用AT命令如何获取3g调制解调器的信号强度? gdbus object for NetworkManager 没有像 getSignalStrength 这样的方法。 网络管理器正在锁定设备文件以防止使用 AT 命令。

nm-applet 能够在系统托盘中显示信号强度。所以应该有办法从网络管理员那里获取信号强度!

nmcli 是 nm-applet 的命令行计数器部分。我可以使用nmcli 获得信号强度吗?手册页中没有提及信号强度。

【问题讨论】:

    标签: c++ linux network-programming gio


    【解决方案1】:

    终于知道答案了!

    在 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 供电的调制解调器。 ——亚历山大·莫尔加多

    可以使用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 秒。接口中的属性值将 一旦我们获得新值(或多或少),就会更新。 ——亚历山大·莫尔加多

    【讨论】:

      【解决方案2】:

      NetworkManager 使用 ModemManager 进行移动宽带调制解调器控制。您可以查看 ModemManager 而不是查看 NetworkManager DBus API,它实际上会公开连接/注册详细信息,包括信号质量。

      如果目标是使用 C++ 开发应用程序以从调制解调器收集信息,我建议使用 libmm-glib(基于 GLib 的库)透明地访问 ModemManager DBus API(即无需了解 DBus)。

      【讨论】:

        【解决方案3】:

        我正在做一项作业,其中我必须通过建筑物中接入点的信号强度来确定室内位置。我正在使用

        iwlist wlan0 扫描

        命令以查看获取附近接入点的信号强度。然后我在 Bash 中处理它的输出并将其重定向到 C++ 可执行文件,这在 Bash 中很容易。我希望它会帮助你。

        【讨论】:

        • 我的设备是 3g 调制解调器。我可以使用iwlist ppp0 scanning 吗?我会试试看。
        • 有效吗?我正在寻找一个 C++ 库来做同样的事情,但我做不到。我虽然在Android中找到了。然后通过这种方式 Bash + C++ 有效地解决了我的问题。希望它也适用于您。
        • 但我没有尝试过。我正在关注这个link。它也可以帮助你。
        • $ iwlist ppp0 scanning ppp0 Interface doesn't support scanning. 仅适用于 wifi 网络。
        • 这个答案是关于 wifi,而 OP 询问的是 3G 调制解调器。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        相关资源
        最近更新 更多