2012-07-05 24 views
7
  • का उपयोग करके ईवेंट का पता लगाएं हम सी/सी ++ में किसी ईवेंट का पता लगाने की कोशिश कर रहे हैं।
  • हम ब्लूटूथ पर ब्लूटूथ का उपयोग हमारी ब्लूटूथ लाइब्रेरी के रूप में कर रहे हैं।
  • हमारा उद्देश्य बाहरी ईवेंट को चलाने के लिए है जब वह ईवेंट ट्रिगर होता है।
  • विशेष रूप से, हमारे पास एक बटन के साथ मोटोरोला एच 730 हेडसेट है, और हम उस बटन के प्रेस का पता लगाने के लिए देख रहे हैं।
  • हमने ब्लूटूथ डिवाइस (एचसीटूल) जोड़ा है, और हम इसे (ब्लूज़-टेस्ट-ऑडियो) से कनेक्ट कर सकते हैं, लेकिन उस दृष्टिकोण को सी/सी ++ में माइग्रेट करने में रुचि होगी।
  • hcidump के उत्पादन में जब डिवाइस जुड़ा हुआ है और बटन दबाया जाता है:ब्लूटूथ: ब्लूज़

    एचसीआई स्निफर - ver 2.2
    डिवाइस ब्लूटूथ पैकेट विश्लेषक: hci0 snap_len: 1028 फिल्टर: 0xffffffff

    एचसीआई घटना: dlen 17संभाल 21 झंडे 0x02: मोड बदलें (0x14) plen 6
    स्थिति संभाल 0x00 21 मोड 0x00 अंतराल 0
    मोड: सक्रिय
    एसीएल डेटा L2CAP (घ): सीआईडी ​​0x0041 लेन 13 [PSM 0]
    < एसीएल डेटा: dlen 14
    L2CAP (घ) संभाल 21 झंडे 0x00: सीआईडी ​​0x0047 लेन 10 [PSM 0]
    < एसीएल डेटा: संभाल 21 सीआईडी ​​0x0047 लेन 18 [PSM 0]
    < एसीएल डेटा:: dlen 22
    L2CAP (घ) संभाल 21 झंडे 0x00: सीआईडी ​​0x0047 लेन 18 [PSM 0]
    एचसीआई घटना dlen 22
    L2CAP (घ) झंडे 0x00 : पूर्ण पैकेट की संख्या (0x13) प्लेन 5
    21 पैकेट 1
    एसीएल डेटा: dlen 18
    L2CAP (घ) संभाल 21 झंडे 0x02: सीआईडी ​​0x0041 लेन 14 [PSM 0]
    < एसीएल डेटा: dlen 14
    L2CAP (घ) संभाल 21 झंडे 0x00: सीआईडी ​​0x0047 लेन 10 [PSM 0]
    एचसीआई घटना: पूरे पैकेट के plen संख्या (0x13) 5
    संभाल 21 पैकेट 1
    एचसीआई घटना: पूरे पैकेट (0x13) plen 5
    संभाल 21 पैकेट 1
    एचसीआई इवेंट की संख्या: संख्या पूरे के पैकेट (0x13) प्लेन 5
    21 पैकेट 1
    एचसीआई घटना: मोड बदलें (0x14) plen 6
    स्थिति संभाल 0x00 21 मोड 0x02 अंतराल 2048
    मोड: सूंघ

  • हम ब्लूटूथ प्रलेखन के लिए देखा है और ज्यादा सफलता नहीं मिली है।
    हम ब्लूज़ का उपयोग कर सी/सी ++ में ब्लूटूथ ईवेंट का पता कैसे लगा सकते हैं?
+0

क्या आपको कोई सफलता मिली है? – Schrieveslaach

उत्तर

0

एकत्रित के रूप में hcidump डिवाइस होस्ट और नियंत्रक के बीच लॉग हैं। घटनाएं वे हैं जिन्हें नियंत्रक डिवाइस होस्ट को भेजता था और आदेश अनुरोध/प्रतिक्रिया डिवाइस होस्ट को भेजती हैं।

Bluez प्रोग्रामिंग गाइड: http://people.csail.mit.edu/albert/bluez-intro/

1

मैं इसी तरह पिछले साल कुछ किया। मैं जिस दृष्टिकोण पर बस गया था वह डी 12 के माध्यम से ब्लूज़ के साथ संवाद करने के लिए सी ++ प्रॉक्सी ऑब्जेक्ट्स/कक्षाएं उत्पन्न करने के लिए libdbus-c++ का उपयोग कर रहा था।

  • अपने हेडसेट द्वारा लागू ब्लूटूथ इंटरफेस का निर्धारण करें। मैंने d-feet का उपयोग किया और डिवाइस कनेक्ट होने पर डिवाइस की खोज की। आप हेडसेट से मैन्युअल रूप से स्थिति को नियंत्रित और पढ़ सकते हैं, यह डिबगिंग के लिए आसान था।
  • आवश्यक इंटरफेस के dbus xml विवरण जेनरेट, ढूंढें या बनाएं। मैंने इसे bluez api documentation से एक्सएमएल तक एपीआई विनिर्देश का अनुवाद करके मैन्युअल रूप से किया है, हालांकि मुझे विश्वास है कि आप उन्हें डीबीस आत्मनिरीक्षण द्वारा भी बना सकते हैं।
  • उपयोग dbusxx-xml2cpp प्रॉक्सी उत्पन्न करने के लिए वस्तुओं
  • कॉलबैक कि जब आपके बटन दबाने
  • एकीकृत रूप में आवश्यक प्रॉक्सी अपने कोड में वस्तुओं कहा जाता है का निर्धारण

आप libdbus- करने के लिए अपने कोड से जोड़ने के लिए की आवश्यकता होगी सी ++ और इसे भी लक्ष्य पर स्थापित किया है।

हेडसेट की पूरी कार्यक्षमता तक पहुंचने के लिए आप उत्पन्न प्रॉक्सी ऑब्जेक्ट्स का उपयोग कर सकते हैं, यह बटन बटन को पकड़ने से कहीं अधिक आसान हो सकता है!

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