2012-07-05 15 views
7
  • kullanma Olay algıla.
  • Linux'ta Bluez'i Bluetooth Kitaplığımız olarak kullanıyoruz.
  • Amacımız, bu olay tetiklendiğinde harici bir komut dosyası çalıştırmaktır.
  • Özellikle, biz de bunun üzerine bir düğme ile, Motorola H730 kulaklık var ve biz bu düğmeye basın algılamak için arıyoruz.
  • Biz bluetooth cihazı (hcitool) eşleştirilmiş ve biz buna (bluez-testi-ses) bağlanabilir, ancak C/C++ için bu yaklaşımı taşımak ilginizi olacaktır.
  • cihaz bağlanmıştır ve düğmeye basıldığında hcidump çıktısı:Bluetooth: Biz C/C++ bir olay algılamaya çalışıyoruz BlueZ

    HCl algılayıcı - 2.2
    cihaz ver Bluetooth paket analiz: hci0 snap_len: 1028 filtresi:

    0xffffffff

    HCl Etkinlik: 17dlen işlemek 21 bayraklar 0x02: Aktif
    ACL veriler: mod değiştirme (0x14) plen 6
    durum 21 mod 0x00 aralığı 0
    mod işlemek 0x L2CAP (d): cid 0x0041 len 13 [PSM 0]
    < ACL veriler: 14
    L2CAP (d) dlen 21 bayrak 0x00 kolu: cid 0x0047 len 10 [PSM 0]
    < ACL veriler: 21 ele cid 0x0047 len 18 [PSM 0]
    < ACL veriler: 22
    L2CAP (d) dlen 21 bayrak 0x00 kolu: cid 0x0047 len 18 [PSM 0]
    HCl Olay 22
    L2CAP (d) dlen bayrakları 0x00 : 5
    sap plen Tamamlanan paketler (0x13) sayısı 21 paket 1
    ACL veriler: 18
    L2CAP (d) dlen 21 bayrak 0x02 kolu: cid 0x0041 len 14 [PSM 0]
    < ACL veriler: 14
    L2CAP (d) dlen 21 bayrak 0x00 kolu: cid 0x0047 len 10 [PSM Tamamlanan sayısı: 0]
    HCl Olay: Tamamlanmış paket sayısı (0x13) plen 5
    kolu 21 paket 1
    HCl Etkinlik: Tamamlanmış paketler (0x13) plen 5
    kolu 21 paket 1
    HCl olay sayısı paketler (0x13) plen 5
    kolu 21 paket 1
    HCI Olay: Mod değiştirme (0x14) plen 6
    durum 21 mod 0x02 aralığını 2048
    Modu işlemek 0x00: Biz bluetooth belgeleri için baktım ve çok başarı olmadı

  • koklayın.
    Bluez'i kullanarak C/C++ içindeki bir bluetooth etkinliğini nasıl algılayabiliriz? Toplanan olarak
+0

Hiç başarılı oldunuz mu? – Schrieveslaach

cevap

0

hcidump aygıt, ana ve kontrol ünitesi arasında kayıtları. Olaylar, denetleyicinin aygıt ana bilgisayarına gönderdiği ve komutların aygıt ana bilgisayarına gönderdiği istek/yanıtlardır.

Bluez programlama kılavuzu: http://people.csail.mit.edu/albert/bluez-intro/

1

Ben benzer geçen yıl bir şey yaptı. Yerleştirdiğim yaklaşım, d45 üzerinden bluez ile iletişim kurmak için C++ proxy nesneleri/sınıfları oluşturmak için libdbus-c++ kullanıyordu.

  • Kulaklığınızın uyguladığı bluetooth arabirimlerini belirleyin. d-feet'u kullandım ve bağlantı kurulduğunda cihazı keşfettim. Buradan kulaklıktan durumu manuel olarak kontrol edebilir ve okuyabilirsiniz, bu hata ayıklama için elverişli hale geldi.
  • Gerekli arabirimlerin dbus xml tanımlarını oluşturun, bulun veya oluşturun. Bunu, api belirtimini bluez api documentation'dan xml'ye çevirerek el ile yaptım, ancak bunları da dbus içgözlemesiyle oluşturabileceğinizi düşünüyorum. proxy oluşturmak için
  • Kullanım dbusxx-xml2cpp
  • düğme
  • gerektiği gibi vekil sizin koduna nesneleri entegre basıldığında denir geri arama belirleyin nesneleri

Sen libdbus- için kodunuzu bağlanmaları gerekecektir C++ ve hedefe de yükler.

Kulaklıklı mikrofon setinin tüm işlevlerine erişmek için oluşturulan proxy nesnelerini kullanabilirsiniz, bir tuşa basmaktan çok daha fazlası için kullanışlı olabilir!

İlgili konular