2013-06-26 6 views
5

एटी का उपयोग किए बिना आज्ञा देता है कि हम कैसे 3g मॉडेम के सिग्नल की शक्ति प्राप्त कर सकते हैं? gdbus object for NetworkManagergetSignalStrength की तरह कोई भी तरीका नहीं है। नेटवर्क मैनेजर एटी कमांड का उपयोग करने से रोकने वाली डिवाइस फ़ाइल लॉक कर रहा है।कैसे C++ में 3g मॉडेम सिग्नल की शक्ति प्राप्त करने के लिए लिनक्स?

एनएम-एप्लेट सिस्टम ट्रे में सिग्नल शक्ति प्रदर्शित करने में सक्षम था। तो सिग्नल शक्ति फार्म नेटवर्क प्रबंधक प्राप्त करने का एक तरीका होना चाहिए!

nmcli एनएम-एप्लेट का कमांड लाइन काउंटर हिस्सा है। क्या मुझे nmcli का उपयोग कर सिग्नल शक्ति मिल सकती है? सिग्नल शक्ति के बारे में कुछ भी इसके मैन पेजों में उल्लेख नहीं किया गया है।

उत्तर

0

मैं एक होमवर्क पर काम कर रहा था, जिसमें मुझे भवन में पहुंच बिंदुओं की सिग्नल शक्तियों के माध्यम से इनडोर स्थान निर्धारित करना था। मैं आदेश आसपास के पहुंच बिंदुओं की सिग्नल की शक्ति मिल देखने के लिए

iwlist wlan0 स्कैनिंग

आदेश का उपयोग किया गया था। तब मैं बैश में इसका आउटपुट संसाधित कर रहा था और इसे सी ++ निष्पादन योग्य फ़ाइल पर रीडायरेक्ट कर रहा था, जो बैश में आसान है। मुझे आशा है कि यह आपकी मदद करेगा।

+0

मेरा डिवाइस 3 जी मॉडेम है। क्या मैं 'iwlist ppp0 स्कैनिंग' का उपयोग कर सकता हूं? मैं कोशिश करूँगा – neckTwi

+0

क्या यह काम करता है? मैं एक ही चीज करने के लिए सी ++ लाइब्रेरी की तलाश में था लेकिन मैं सक्षम नहीं था। हालांकि मैंने एंड्रॉइड में पाया था। फिर इस तरह बैश + सी ++ ने मेरी समस्या को कुशलता से हल किया था। उम्मीद है कि यह आपके लिए भी काम करता है। – Tlos

+0

अभी तक मैंने कोशिश नहीं की है। मैं इसका अनुसरण कर रहा हूं [लिंक] (http://arachnoid.com/linux/linux_mobile_internet_access.html)। यह भी आपकी मदद कर सकता है। – neckTwi

4

अंत में जवाब मिल गया है!

सी ++ में डीबीस प्रॉक्सी पर कार्य करने के लिए libnm-glib का उपयोग करें। आदेश पंक्ति उपयोग से ..

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

यू जीएसएम मॉडम के सिग्नल की शक्ति देता है।

यदि एमएम कहता है कि कनेक्ट होने पर सिग्नल गुणवत्ता नहीं मिल सकती है, तो ऐसा इसलिए है क्योंकि सभी कमांड और डेटा के लिए केवल एक एटी पोर्ट है। तो जब एटी बंदरगाह जुड़ा हुआ है, कोई आज्ञाओं में संकेत गुणवत्ता इकट्ठा करने के लिए भेजा जा सकता है। आपको या तो अधिक एटी बंदरगाहों के साथ बेहतर मॉडेम प्राप्त करने की आवश्यकता होगी, या को गैर-एटी मॉडेम पर स्विच करें, जैसे क्यूएमआई या एमबीआईएम संचालित एक। - एलेक्ज़ैंडर मोर्गाडो

एक org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality का उपयोग कर

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

प्र प्रॉक्सी संकेतों हर वहाँ asynchonously या ModemManager चुनाव मॉडेम समय-समय पर सिग्नल की शक्ति में बदलाव के संकेत गुणवत्ता प्राप्त करने के लिए है क्या संकेत सुन सकते हैं ?

ए। यह मॉडेम इस्तेमाल होने पर निर्भर करता है; मॉडेम अवांछित गुणवत्ता परिवर्तन संकेत का समर्थन करता है, तो हम उन्हें इस्तेमाल करेंगे; अन्यथा एमएम सिग्नल गुणवत्ता मूल्यों के लिए हर 30s मतदान करेगा। इंटरफेस में प्रॉपर्टी वैल्यू अपडेट हो जाएंगे जब हमें नए मान मिलेंगे (अधिक या कम)। - एलेक्ज़ैंडर मोर्गाडो

2

NetworkManager मोबाइल ब्रॉडबैंड मॉडेम नियंत्रण के लिए ModemManager उपयोग करता है। NetworkManager DBus API को देखने के बजाय, आप ModemManager वाले को देख सकते हैं, जो वास्तव में सिग्नल गुणवत्ता सहित कनेक्शन/पंजीकरण विवरण का पर्दाफाश करेंगे।

यदि मॉडेम से जानकारी इकट्ठा करने के लिए सी ++ का उपयोग करके एप्लिकेशन विकसित करने का लक्ष्य है, तो मैं मॉडेममेनगर डीबीस एपीआई पारदर्शी रूप से एक्सेस करने के लिए libmm-glib (जीएलआईबी-आधारित लाइब्रेरी) का उपयोग करने का सुझाव दूंगा (यानी।डीबीस को जानने की आवश्यकता के बिना)।

संबंधित मुद्दे