使用Bluez的C / C ++ BLE读/写示例

我开始建立一个简单的BLE网络,带有微控制器和覆盆子pi(tardis BLE加密狗)。 作为一个起点,我正在寻找一个简单的C或C ++示例来读/写一个BLE设备,类似于我能够在命令行上做的事情。 到目前为止,我发现的例子非常复杂。 作为一名BLE初学者,我需要一些非常简单的例子来构建,然后再采用更复杂的设计。 我可以像在下面的gatttool示例中那样对BLE设备名称进行硬编码。

以下是我目前使用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。希望如何使用它是不言而喻的。