Col*_*son 9 c c++ bluetooth raspberry-pi bluez
我开始建立一个简单的BLE网络,带有微控制器和覆盆子pi(tardis BLE加密狗).作为一个起点,我正在寻找一个简单的C或C++示例来读/写一个BLE设备,类似于我在命令行上可以做的事情.到目前为止,我发现的例子非常复杂.作为一名BLE初学者,我需要一些非常简单的例子来构建,然后再采用更复杂的设计.我可以像在下面的gatttool示例中那样对BLE设备名称进行硬编码.
以下是我目前使用Bluez命令行选项的方法.
从命令行我可以使用:
$ sudo hcitool lescan
LE Scan ...
BB:A0:50:02:18:07 MyDevice
Run Code Online (Sandbox Code Playgroud)
接下来,我可以使用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
Run Code Online (Sandbox Code Playgroud)
最后,我能够使用适当的句柄进行读写
[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
Run Code Online (Sandbox Code Playgroud)
我用于初步研究和开始的一些网站:
http
://people.csail.mit.edu/albert/bluez-intro/c404.html
https://github.com/carsonmcdonald/bluez-experiments/blob/主/实验/ scantest.c
Bluez(Linux 官方蓝牙堆栈)已将其 API转移到DBUS。虽然在过去,“分叉”bluez 代码以在 Linux 上访问 BLE 支持是“被接受的”,但现在的方法是使用 DBUS。Bluez DBUS API 记录在此处:https : //git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc
您可以直接与 DBUS 进行蓝牙 C/C++ 应用程序对话,或者使用 GATT 库作为帮助程序。第二种可能是初学者的最佳方法(也适用于希望保持程序 Bluez 不可知的非初学者,例如支持其他操作系统或 Bluez pre-DBUS API 或使其源代码更具可读性)。
支持现代 D-BUS API 的 GATT 库之一是gattlib(注意:我是这个库的作者)。这是一个基于此库的简单示例,用于读取/写入 BLE 设备:https : //github.com/labapart/gattlib/blob/master/examples/read_write/read_write.c