如何在 c++ linux 中获取 3g 调制解调器信号强度?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 调制解调器。

以上是关于如何在 c++ linux 中获取 3g 调制解调器信号强度?的主要内容,如果未能解决你的问题,请参考以下文章

LTE-5G学习笔记30--5G NR的调制方式与解调算法

扩频调制解调技术

调制与解调

看,这就是调制解调原理分析,附仿真文件

通信原理实验1 基于Matlab的模拟信号的调制和解调

[培训-无线通信基础-5]:数字调制解调(线性调制非线性调制)