без использования команд AT, как мы можем получить уровень сигнала 3G модема? объект gdbus для NetworkManager не имеет никакого метода, как 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
Q. Происходит ли прокси-сигнал каждый раз, когда происходит изменение уровня сигнала асинхронно, или ModemManager периодически опрашивает модем, чтобы получить качество сигнала?
A. Это зависит от используемого модема; если модем поддерживает незапрошенный
признаки изменения качества, мы будем их использовать; иначе ММ будет опрашивать каждого
30 с для значений качества сигнала. Значения свойств в интерфейсе будут
обновляться, как только мы получим новые значения (более или менее). — Александр Моргадо
NetworkManager использует ModemManager для управления мобильным широкополосным модемом. Вместо того, чтобы смотреть на API-интерфейсы DBus NetworkManager, вы можете посмотреть на ModemManager те, которые на самом деле будут раскрывать детали подключения / регистрации, включая качество сигнала.
Если нацелено на разработку приложения с использованием C ++ для сбора информации с модема, я бы предложил использовать libmm-бойкий (Библиотека на основе GLib) для прозрачного доступа к API-интерфейсу DBm ModemManager (т.е. без необходимости знать DBus).
Я работал над домашней работой, в которой мне нужно было определить местоположение в помещении с помощью уровня сигнала точек доступа в здании. Я использовал
iwlist wlan0 scan
Команда для того, чтобы увидеть получить уровень сигнала точек доступа поблизости. Затем я обрабатывал вывод в Bash и перенаправлял его в исполняемый файл C ++, что легко в Bash. Я надеюсь, что это поможет вам.