簡體   English   中英

如何在c ++ linux中獲得3g調制解調器信號強度?

[英]how to get 3g modem signal strength in c++ linux?

不使用AT命令我們如何獲得3g調制解調器的信號強度? NetworkManagergdbus對象沒有getSignalStrength等任何方法。 網絡管理器鎖定設備文件,阻止使用AT命令。

nm-applet能夠在系統托盤中顯示信號強度。 所以應該有辦法從網絡管理員那里獲得信號強度!

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供電的調制解調器。 - 亞歷山大·莫爾加多

可以使用org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality信號監聽

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

問:每當異步信號強度發生變化時,代理是否會發出信號,或者ModemManager會定期輪詢調制解調器以獲得信號質量?

答:這取決於所使用的調制解調器; 如果調制解調器支持未經請求的質量變更指示,我們將使用它們; 否則MM將每30秒輪詢一次信號質量值。 一旦獲得新值(或多或少),界面中的屬性值將被更新。 - 亞歷山大·莫爾加多

NetworkManager使用ModemManager進行移動寬帶調制解調器控制。 您可以查看ModemManager ,而不是查看NetworkManager DBus API,它實際上會公開連接/注冊詳細信息,包括信號質量。

如果要使用C ++開發應用程序來從調制解調器收集信息,我建議使用libmm-glib (基於GLib的庫)透明地訪問ModemManager DBus API(即無需了解DBus)。

我正在做一個家庭作業,我必須通過建築物中接入點的信號強度來確定室內位置。 我在用

iwlist wlan0掃描

命令以便查看附近接入點的信號強度。 然后我在Bash中處理它的輸出並將其重定向到C ++可執行文件,這在Bash中很容易。 我希望它會對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM