首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Bluez的C/C++ BLE读/写示例

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

Stack Overflow用户
提问于 2015-05-22 08:31:19
回答 2查看 27.7K关注 0票数 11

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

下面是我目前如何使用Bluez中的命令行选项。

在命令行中,我可以使用:

代码语言:javascript
运行
复制
$ sudo hcitool lescan
LE Scan ...
BB:A0:50:02:18:07 MyDevice

接下来,我可以使用gatttool在命令行上连接到设备:

代码语言:javascript
运行
复制
$ 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

最后,我可以使用适当的句柄进行读写。

代码语言:javascript
运行
复制
[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

EN

回答 2

Stack Overflow用户

发布于 2019-07-10 04:10:17

Bluez (Linux官方蓝牙协议栈)已经转移到了DBUS上。在过去,在Linux上'fork‘bluez代码来访问BLE支持是’被接受的‘,而现在的方法是使用DBUS。Bluez DBUS API的文档如下:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc

要么直接为蓝牙C/C++应用程序与DBUS对话,要么使用GATT库作为帮助器。对于初学者来说,第二种方法可能是最好的方法(对于那些希望让自己的程序保持Bluez不可知性的非初学者来说也是如此,例如,为了支持其他OSes或Bluez pre-DBUS API,或者让他们的源代码更具可读性)。

其中一个支持现代D-BUS API的GATT库是gattlib (注意:我是这个库的作者)。下面是一个基于该库的简单示例,用于读/写BLE设备:https://github.com/labapart/gattlib/blob/master/examples/read_write/read_write.c

票数 7
EN

Stack Overflow用户

发布于 2015-05-22 09:39:54

一些简单的东西?一根绳子有多短?我个人认为gatttool代码本身非常简单,可以按照您自己的目的进行操作和提取(我最近就是这样做的)。但如果这真的不适合你,那么另一个选择是libgatt。它本质上与gatttool使用的代码相同,但被更方便地捆绑到一个公共库API中。看看gatt.h,它有连接/读/写等等。希望它应该是不言而喻的如何使用它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30386577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档