2015-04-21 12 views
8

Sto programmando in BlueZ sul mio Raspberry Pi con un dongle Bluetooth USB. Devo essere in grado di collegarmi programmaticamente ad un Arduino BT, il problema è che il modulo Bluetooth di Arduino usa ancora l'accoppiamento legacy, quindi ogni volta che provo ad aprire un socket sul dispositivo ottengo un Permission Denied. Come si invia un PIN per completare la richiesta di abbinamento tramite BlueZ?Programmazione Bluez

+0

Hai provato con 'simple-agent'? –

+0

Voglio farlo senza software di terze parti, solo attraverso l'API C bluez. –

+0

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

risposta

8

È possibile controllare il file main.c nella cartella client del codice sorgente Bluez più recente. È il codice sorgente per lo strumento bluetoothctl. Eseguilo anche tu. Il codice sorgente mostra esattamente come usano GDBus, inclusi proxy, agenti, metodi di chiamata come descritto nell'API (/doc folder) e tutto il resto. È in C e utilizza l'API di alto livello.

Vi suggerisco di passare attraverso il codice perché mi ci sono volute 2 settimane per cercare di capire Bluez in C e il fatto che non c'è documentazione, ma quando ho letto il file main.c ero pronto in un giorno. Leggi sulla documentazione corretta dell'API di Dbus e, ancora più importante, sui concetti. Alcuni documenti che mi hanno aiutato:

Lo strumento GDBus: https://developer.gnome.org/gio/stable/gdbus.html

Queste contengono tutte le chiamate per GDBus e oggetti nel file main.c e li spiegano molto bene. https://developer.gnome.org/gio/stable/gdbus-convenience.html

D-Piedi, uno strumento prezioso per l'ispezione e l'apprendimento di Dbus sul proprio sistema. Prova a controllare il bus/bluez. https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet

o

sudo apt-get install d-feet

Non c'è molto di un tutorial, ma vale la pena di leggere per capire alcuni concetti, come lo strumento bluetoothctl si inserisce in quello che stanno cercando di dire qui. http://dbus.freedesktop.org/doc/dbus-tutorial.html

Il bluetoothctl crea comunque una shell interattiva, quindi potrebbe non essere saggio sprecare tempo nel tentativo di inserire il codice, ma scegliere solo ciò che è necessario da esso.

Problemi correlati