2013-06-26 14 views
5

senza utilizzare i comandi AT come possiamo ottenere la potenza del segnale del modem 3g? Il gdbus object for NetworkManager non ha alcun metodo come getSignalStrength. Il gestore di rete blocca il file del dispositivo impedendo l'utilizzo dei comandi AT.come ottenere la potenza del segnale del modem 3g in C++ linux?

nm-applet è stato in grado di visualizzare l'intensità del segnale nella barra delle applicazioni. quindi dovrebbe esserci un modo per ottenere la forza del segnale dal gestore di rete!

nmcli è la parte del contatore della riga di comando di nm-applet. Posso ottenere la potenza del segnale usando nmcli? nulla nella potenza del segnale è menzionato nelle sue pagine man.

risposta

0

Stavo lavorando a un compito a casa, in cui dovevo determinare la posizione interna per mezzo delle intensità di segnale dei punti di accesso in un edificio. Stavo usando

scansione comando iwlist wlan0

al fine di vedere arrivare la forza dei punti di accesso del segnale nelle vicinanze. Quindi stavo elaborando l'output di esso in Bash e reindirizzandolo al file eseguibile C++, che è facile in Bash. Spero ti possa aiutare.

+0

il mio dispositivo è un modem 3g. posso usare 'iwlist ppp0 scanning'? lo proverò. – neckTwi

+0

Funziona? Stavo cercando una libreria C++ per fare la stessa cosa, ma non ero in grado di farlo. Avevo trovato in Android però. Quindi in questo modo Bash + C++ ha risolto il mio problema in modo efficiente. Spero che funzioni anche per te. – Tlos

+0

ma non l'ho provato. sto seguendo questo [collegamento] (http://arachnoid.com/linux/linux_mobile_internet_access.html). anche questo può aiutarti. – neckTwi

4

Finalmente la risposta!

In C++ utilizzare libnm-glib per agire sul proxy dbus. Dalla riga di comando, utilizzare ..

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

fornisce la potenza del segnale del modem gsm.

Se MM dice che non è possibile ottenere la qualità del segnale mentre è connesso, è perché c'è solo una porta AT per tutti i comandi e dati. Pertanto, quando è collegata la porta AT , non è possibile inviare comandi AT per raccogliere la qualità del segnale. Avrete bisogno di ottenere un modem migliore con più porte AT o di passare da a un modem non AT, come QMI o MBIM. - Aleksander Morgado

Si può ascoltare org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality segnale utilizzando

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

D. i segnali del proxy ogni volta che c'è un cambiamento nella potenza del segnale asynchonously o ModemManager modem sondaggi periodicamente per ottenere la qualità del segnale ?

A. Dipende dal modem in uso; se il modem supporta indicazioni di modifica della qualità non richieste , le useremo; altrimenti MM eseguirà il polling di tutti gli 30 per i valori di qualità del segnale. I valori delle proprietà nell'interfaccia saranno aggiornati una volta ottenuti i nuovi valori (più o meno). - Aleksander Morgado

2

NetworkManager utilizza ModemManager per il controllo del modem a banda larga mobile. Invece di guardare le API di DBus di NetworkManager, puoi guardare le ModemManager, che espongono effettivamente i dettagli di connessione/registrazione, inclusa la qualità del segnale.

Se il targeting per sviluppare un'applicazione che utilizza C++ per raccogliere informazioni dal modem, suggerirei di utilizzare libmm-glib (libreria basata su GLib) per accedere all'API DBus di ModemManager in modo trasparente (ad es.senza bisogno di conoscere DBus).

Problemi correlati