2015-04-21 19 views
8

BlueZ'de Raspberry Pi'imde bir USB Bluetooth dongle'ı ile programlama yapıyorum. Bir Arduino BT'ye programsal olarak bağlanabilmem gerekiyor, sorun şu ki Arduino'nun Bluetooth modülü hala eski eşleştirmeyi kullanıyor, bu yüzden bir prize açmaya çalıştığımda bir Permission Denied aldım. MaviZ ile eşleştirme isteğini tamamlamak için bir PIN'i nasıl gönderirim?Bluez Programlama

+0

"Basit aracı" ile test ettiniz mi? –

+0

Üçüncü taraf yazılımı olmadan, sadece bluez C API'sı üzerinden yapmak istiyorum. –

+0

Bunu deneyin: http://stackoverflow.com/questions/14820004/bluetooth-pairing-in-c-bluez-on-linux –

cevap

8

En son Bluez kaynak kodunun client klasöründeki main.c dosyasına göz atmak isteyebilirsiniz. Bluetoothctl aracının kaynak kodu. Onu da çalıştır. Kaynak kodu, proxy'ler, aracılar, API'da (/doc folder) açıklanan yöntemler gibi çağrı yöntemlerini ve bunların tümünü içeren GDBus'u nasıl kullandıklarını tam olarak gösterir. C dilinde ve yüksek seviyeli API'yi kullanıyor.

Kodun içinden adım atmanızı öneririm çünkü Bluez in C'yi anlamaya çalışıyorum ve belgelemenin olmaması gerçeği 2 haftadır beni aldı, ancak main.c dosyasını okuduğumda bir günde hazırdım. Uygun Dbus API belgelerini ve daha önemlisi kavramları okuyun. bana yardımcı Bazı belgeler:

gdbus aracı: https://developer.gnome.org/gio/stable/gdbus.html

Bunlar tüm çağrılar gdbus ve main.c dosyada nesneleri ve onları çok iyi açıklamak içerirler. https://developer.gnome.org/gio/stable/gdbus-convenience.html

D-Feet, Dbus'u sisteminizde denetlemek ve öğrenmek için çok değerli bir araçtır./Bluez otobüsüne bakmayı dene. https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet

veya öğretici çok ama bluetoothctl aracı burada söylemeye çalıştığın şey sığar gibi bazı kavramları anlamak için salt değmez

sudo apt-get install d-feet

. http://dbus.freedesktop.org/doc/dbus-tutorial.html

Bluetoothctl etkileşimli bir kabuk oluştursa da, kodunuza sığmaya çalışan zaman kaybetmek akıllıca olmayabilir, ancak yalnızca ihtiyacınız olanı seçin.