2015-04-21 3 views
8

Я программирую в BlueZ на моей малине Pi с помощью USB-ключа Bluetooth. Мне нужно иметь возможность программно подключаться к Arduino BT, проблема в том, что Bluetooth-модуль Arduino по-прежнему использует устаревшее сопряжение, поэтому всякий раз, когда я пытаюсь открыть сокет для устройства, я получаю Permission Denied. Как отправить PIN-код, чтобы выполнить запрос на сопряжение через BlueZ?Bluez Программирование

+0

Испытываете ли вы с помощью «простого агента»? –

+0

Я хочу сделать это без стороннего программного обеспечения, только через bluez C API. –

+0

Попробуйте следующее: http://stackoverflow.com/questions/14820004/bluetooth-pairing-in-c-bluez-on-linux –

ответ

8

Возможно, вы захотите проверить файл main.c в папке client самого последнего исходного кода Bluez. Это исходный код для инструмента bluetoothctl. Запустите его тоже. Исходный код показывает, как они используют GDBus, включая прокси, агенты, вызывающие методы, описанные в API (/doc folder), и все такое. Он находится в C и использует API высокого уровня.

Я предлагаю вам пройти через код, потому что мне понадобилось 2 недели, бесконечно пытаясь понять Bluez в C и тот факт, что документации нет, но когда я прочитал этот файл main.c, я был готов через день. Прочитайте правильную документацию API Dbus и, что более важно, концепции. Некоторые документы, которые помогли мне:

gdbus инструмент: https://developer.gnome.org/gio/stable/gdbus.html

Они содержат все вызовы gdbus и объекты в файле main.c и объяснить их очень хорошо. https://developer.gnome.org/gio/stable/gdbus-convenience.html

D-Feet - бесценный инструмент для изучения и изучения Dbus в вашей системе. Попробуйте проверить автобус/bluez. https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet

или

sudo apt-get install d-feet

Не большая часть учебника, но стоит прочитать, чтобы понять некоторые понятия, как инструмент bluetoothctl вписывается в то, что они пытаются сказать здесь. http://dbus.freedesktop.org/doc/dbus-tutorial.html

bluetoothctl создает интерактивную оболочку, поэтому, возможно, было бы неразумно тратить время на то, чтобы поместиться в ваш код, но просто выберите то, что вам нужно от него.

Смежные вопросы