2015-04-21 23 views
8

Programuję w BlueZ na moim Raspberry Pi z kluczem USB Bluetooth. Muszę być w stanie programowo połączyć się z Arduino BT, problem polega na tym, że moduł Bluetooth Arduino wciąż używa starszego parowania, więc za każdym razem, gdy próbuję otworzyć gniazdo na urządzeniu, otrzymuję Permission Denied. Jak wysłać kod PIN, aby ukończyć żądanie parowania za pomocą BlueZ?Bluez Programowanie

+0

Czy testowałeś za pomocą 'prostego-agenta'? –

+0

Chcę to zrobić bez oprogramowania stron trzecich, tylko poprzez interfejs API bluez C. –

+0

Spróbuj tego: http://stackoverflow.com/questions/14820004/bluetooth-pairing-in-c-bluez-on-linux –

Odpowiedz

8

Możesz chcieć sprawdzić plik main.c w folderze client najnowszego kodu źródłowego Bluez. Jest to kod źródłowy narzędzia bluetoothctl. Uruchom także. Kod źródłowy pokazuje dokładnie, w jaki sposób korzystają z GDBus, w tym z serwerów proxy, agentów, metod wywoływania, jak opisano w API (/doc folder) i tym podobne. Jest w C i używa interfejsu API wysokiego poziomu.

Proponuję, abyś przejrzał kod, ponieważ zajęło mi to 2 tygodnie bez końca próbując zrozumieć Bluez w C i fakt, że nie ma dokumentacji, ale kiedy przeczytałem ten plik main.c byłem gotowy w jeden dzień. Zapoznaj się z odpowiednią dokumentacją API Dbus i, co ważniejsze, z koncepcjami. Niektóre dokumenty, które pomogły mi:

Narzędzie gdbus: https://developer.gnome.org/gio/stable/gdbus.html

Zawierają one wszystkie połączenia do gdbus i obiektów w pliku main.c i wyjaśnić je bardzo dobrze. https://developer.gnome.org/gio/stable/gdbus-convenience.html

D-Feet, nieocenione narzędzie do kontroli i poznawania Dbus w Twoim systemie. Spróbuj sprawdzić autobus/bluez. https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet

lub

sudo apt-get install d-feet

Nie wiele z samouczka, ale warto czytać, aby zrozumieć pewne koncepcje, jako narzędzie bluetoothctl pasuje do tego, co próbujesz powiedzieć tutaj. http://dbus.freedesktop.org/doc/dbus-tutorial.html

Jednak bluetoothctl tworzy interaktywną powłokę, więc może nie być mądrym tracić czasu, próbując dopasować kod, ale wystarczy wybrać z niego to, czego potrzebujesz.