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
Odpowiedz
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.
Czy testowałeś za pomocą 'prostego-agenta'? –
Chcę to zrobić bez oprogramowania stron trzecich, tylko poprzez interfejs API bluez C. –
Spróbuj tego: http://stackoverflow.com/questions/14820004/bluetooth-pairing-in-c-bluez-on-linux –