Образец BlueZ D-Bus C или C ++

Я пытаюсь написать приложение, которое ищет устройства Bluetooth поблизости и общается с ними. Мое приложение будет написано на C ++ и предназначено для работы под Linux.

4 года назад я использовал BlueZ. Но теперь, как я вижу, API сильно изменился, и теперь он использует D-Bus. Я не был опытным с D-Bus. Я посмотрел некоторые учебники, связанные с моделью клиент / сервер. Теперь я в порядке с D-Bus.

Но я не смог найти ни одного примера, который объясняет, как использовать BlueZ с D-Bus. Мне нужно некоторое руководство для совместного использования BlueZ и D-Bus.

Есть ли учебник или пример для работы с BlueZ через D-Bus на C или C ++?

(примечание: уже гуглил)

7

Решение

Вы можете проверить main.c файл в client папка с самым последним исходным кодом Bluez. Это исходный код bluetoothctl инструмент. Запустите это тоже. Исходный код показывает, как именно они используют GDBus, включая прокси, агенты, методы вызова, как описано в документации API (папка / doc) и все такое. Это на 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&перенаправлять = DFeet

или же

sudo apt-get install d-feet

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

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

16

Другие решения

Других решений пока нет …