Я начинаю создавать простую сеть BLE с микроконтроллером и Raspberry Pi (ключ TARDIS BLE). В качестве отправной точки я ищу простой пример C или C ++ для чтения / записи устройства BLE, аналогичный тому, что я могу сделать через командную строку. Приведенные мною примеры довольно сложны. Как новичку в BLE, мне нужно собрать несколько очень простых примеров, чтобы перейти к более сложному дизайну. Я согласен с жестким кодированием имени устройства BLE, как в примере с gatttool ниже.
Вот как я в настоящее время использую параметры командной строки от Bluez.
Из командной строки я могу использовать:
$ sudo hcitool lescan
LE Scan ...
BB:A0:50:02:18:07 MyDevice
Далее я могу подключиться к устройству из командной строки с помощью gatttool:
$ sudo gatttol -b BB:A0:50:02:18:07 -I
[BB:A0:50:02:18:07][LE]> connect
Attempting to connect to BB:A0:50:02:18:07
Connection successful
Наконец я могу читать и писать, используя соответствующие ручки
[BB:A0:50:02:18:07][LE]> char-write-req 000f 0100
Characteristic value was written successfully
[BB:A0:50:02:18:07][LE]> char-write-cmd 0011 4C467A
Некоторые сайты, которые я использовал для первоначального исследования и для начала:
http://people.csail.mit.edu/albert/bluez-intro/c404.html
https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c
Что-то простое? Насколько короток кусок нити? Лично я считаю, что сам код gatttool достаточно прост, чтобы следовать и извлекать его для ваших собственных целей (я делал это недавно). Но если это действительно не подходит для вас, то другой вариант libgatt. По сути, это тот же код, который использует gatttool, но более удобно он был встроен в API публичной библиотеки. Посмотри на gatt.h который имеет подключение / чтение / запись и т. д. Надеюсь, это должно быть само собой разумеющимся, как использовать это.