2013-06-26 10 views
5

ATコマンドを使用しない3gモデムの信号強度を得るにはどうすればよいですか? gdbus object for NetworkManagerにはgetSignalStrengthのような方法はありません。 ネットワークマネージャがロックデバイスファイルで、ATコマンドを使用できません。C++のlinuxで3gモデム信号強度を取得するには?

nm-appletはシステムトレイに信号強度を表示できました。そのため、ネットワークマネージャから信号強度を取得する方法が必要です。

nmcliは、nm-appletのコマンドラインカウンタです。 nmcliを使用して信号強度を取得できますか?そのマニュアルページには信号強度については何も言及されていません。

答えて

0

私は家の中で、建物の中のアクセスポイントの信号強度を使って屋内の場所を決めなければならなかった。私は、近くのアクセスポイントの信号強度を得る見るために

コマンド

iwlist wlan0スキャンを使用していました。その後、Bashでその出力を処理して、Bashで簡単なC++実行可能ファイルにリダイレクトしていました。それがあなたを助けることを願っています。

+0

私のデバイスは3gモデムです。 'iwlist ppp0 scanning'を使用できますか?私は試してみる。 – neckTwi

+0

動作しますか?私は同じことをするためにC + +ライブラリを探していたが、私はできなかった。私はAndroidで見つけた。そして、この方法でBash + C++は私の問題を効率的に解決しました。それもあなたのために動作することを願っています。 – Tlos

+0

まだ私はそれを試していない。私はこの[リンク](http://arachnoid.com/linux/linux_mobile_internet_access.html)に従っています。それもあなたを助けるかもしれません。 – neckTwi

4

最後に答えが得られました!

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が接続中に信号品質を得ることができないとすれば、 すべてのコマンドとデータに対して1つのATポートしかないからです。したがって、ATポート が接続されている場合は、ATコマンドを送信して信号品質を収集することはできません。 より多くのATポートを持つより良いモデムを入手するか、 をQMIまたはMBIMで動くような非ATモデムに切り替える必要があります。 - アレクサンダーモルガド

一つは

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

Q.が信号強度の変化がasynchonouslyあるかModemManagerポーリングは、信号品質を得るために、定期的にモデム毎回プロキシ信号をいを使用してorg.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality信号を聞くことができます?

A.使用されているモデムによって異なります。モデムが迷惑な 品質変更表示をサポートしている場合は、それらを使用します。それ以外の場合は、MMはすべての信号品質値に対して 30sをポーリングします。インターフェイスのプロパティ値は、新しい値を取得すると更新されます(多かれ少なかれ) になります。 - アレクサンダーモルガド

2

NetworkManagerは、モバイルブロードバンドモデム制御用ModemManagerを使用しています。 NetworkManager DBus APIを見る代わりに、ModemManagerのものを見ることができます。実際には、信号品質を含む接続/登録の詳細が公開されます。

モデムから情報を収集するためにC++を使用してアプリケーションを開発する場合は、libmm-glib(GLibベースのライブラリ)を使用してModemManager DBus APIに透過的にアクセスすることをお勧めします。DBusを知る必要はありません)。

関連する問題