2013-06-26 4 views
5

AT 명령을 사용하지 않고 어떻게 3g 모뎀의 신호 강도를 얻을 수 있습니까? gdbus object for NetworkManager에는 getSignalStrength과 같은 방법이 없습니다. 네트워크 관리자가 잠금 장치 파일이므로 AT 명령을 사용할 수 없습니다.C++ Linux에서 3g 모뎀 신호 강도를 얻는 방법은 무엇입니까?

nm-applet은 시스템 트레이에서 신호 강도를 표시 할 수있었습니다. 그래서 신호 강도 네트워크 관리자를 얻는 방법이 있어야합니다!

nmcli은 nm-applet의 명령 줄 카운터 부분입니다. nmcli을 사용하여 신호 강도를 얻을 수 있습니까? 신호 강도에 대해서는 man 페이지에 언급되어 있지 않습니다.

답변

0

나는 건물의 액세스 포인트의 신호 강도를 사용하여 실내 위치를 결정해야하는 숙제를 작업하고있었습니다. 근처 액세스 포인트의 신호 강도를 얻을보기 위해 나는

iwlist의 wlan0 검사

명령을 사용했다. 그런 다음 Bash에서 출력을 처리하고 Bash에서 쉽게 사용할 수있는 C++ 실행 파일로 리디렉션했습니다. 나는 그것이 당신을 도울 것이기를 바랍니다.

+0

내 장치가 3g 모뎀입니다. 'iwlist ppp0 scanning'을 사용할 수 있습니까? 나는 밖으로 시험 할 것이다. – neckTwi

+0

작동합니까? 같은 것을하기 위해 C++ 라이브러리를 찾고 있었지만 할 수 없었습니다. 나는 안드로이드에서 발견했다. 그렇다면 Bash + C++는 내 문제를 효율적으로 해결했습니다. 희망은 당신을 위해 또한 작동합니다. – Tlos

+0

아직 시도하지 않았습니다. 나는이 [link] (http://arachnoid.com/linux/linux_mobile_internet_access.html)을 따르고있다. 그것도 당신을 도울 수 있습니다. – neckTwi

4

마지막으로 답변을 얻었습니다!

C++에서는 libnm-glib를 사용하여 dbus proxy에서 작동합니다. 명령 행에서 사용하십시오 ..

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 포트가있는 더 좋은 모뎀을 얻거나 을 QMI 또는 MBIM으로 구동되는 것과 같이 비 AT 모뎀으로 전환해야합니다. - 알렉산더 모르가이

하나는 Q. 프록시 신호마다 asynchonously 또는 ModemManager 조사 모뎀 주기적으로 신호 강도의 변화가 신호 품질을 거기에 도착하는 것입니다합니까

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

사용 org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality 신호를들을 수 있습니다 ?

A. 사용중인 모뎀에 따라 다릅니다. 모뎀이 원치 않는 품질 변경 표시를 지원하는 경우이를 사용합니다. 그렇지 않으면 MM은 모든 30s를 폴링하여 신호 품질 값을 찾습니다. 새로운 값을 얻으면 인터페이스의 속성 값은 으로 업데이트됩니다 (다소 차이가 있음). - 알렉산더 모르가

2

네트워크 매니저는 모바일 광대역 모뎀 제어를위한 ModemManager를 사용합니다. NetworkManager DBus API를 보는 대신 ModemManager 정보를 볼 수 있습니다. 실제로 신호 품질을 비롯한 연결/등록 세부 정보가 노출됩니다.

C++을 사용하여 응용 프로그램을 개발하여 모뎀에서 정보를 수집하려는 경우 libmm-glib (GLib 기반 라이브러리)을 사용하여 ModemManager DBus API에 투명하게 액세스 할 것을 제안합니다.DBus를 알 필요없이).

관련 문제