Wreszcie dostałem odpowiedź!
W języku C++ użyj libnm-glib, aby działać na proxy dbus. Z poziomu wiersza poleceń użyj ..
gdbus call --system --dest org.freedesktop.ModemManager --object-path /org/freedesktop/ModemManager/Modems/0 --method org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality
daje siłę sygnału modemu GSM.
Jeśli MM mówi, że nie może uzyskać jakości sygnału podczas połączenia, to dlatego, że jest tylko jeden port AT dla wszystkich poleceń i danych. Zatem gdy podłączony jest port AT , żadne polecenia AT nie mogą być wysyłane w celu uzyskania jakości sygnału. Musisz albo uzyskać lepszy modem z większą liczbą portów AT, albo przełączyć na modem inny niż AT, taki jak QMI lub MBIM. - Aleksander Morgado
Można słuchać org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality
sygnału z wykorzystaniem
gdbus monitor --system --dest org.freedesktop.NetworkManager --object-path /org/freedesktop/NetworkManager/Modems/0
P. Czy sygnały proxy za każdym razem gdy następuje zmiana w sile sygnału asynchonously lub ModemManager ankiety modem okresowo, aby uzyskać jakość sygnału ?
A. Zależy to od używanego modemu; jeśli modem obsługuje niezapowiedziane wskaźniki zmiany jakości, użyjemy ich; w przeciwnym razie MM będzie odpytywać co 30-sekundowe wartości jakości sygnału. Wartości właściwości w interfejsie zostaną zaktualizowane, gdy otrzymamy nowe wartości (mniej więcej). - Aleksander Morgado
Moje urządzenie to modem 3G. czy mogę użyć 'iwlist ppp0 scanning'? spróbuję. – neckTwi
Czy to działa? Szukałem biblioteki C++, aby zrobić to samo, ale nie byłem w stanie. Znalazłem jednak w Androidzie. W ten sposób Bash + C++ skutecznie rozwiązał mój problem. Mam nadzieję, że to działa również dla ciebie. – Tlos
jeszcze tego nie wypróbowałem. śledzę to [link] (http://arachnoid.com/linux/linux_mobile_internet_access.html). to też może ci pomóc. – neckTwi