首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蓝牙:使用Bluez检测事件

蓝牙:使用Bluez检测事件
EN

Stack Overflow用户
提问于 2012-07-05 21:18:49
回答 2查看 4.9K关注 0票数 7
  • 我们试图在C/C++中检测一个事件。
  • 我们在Linux上使用Bluez作为我们的蓝牙库。
  • 我们的目标是在触发事件时运行外部脚本。
  • 具体来说,我们有一个摩托罗拉H730耳机,上面有一个按钮,我们希望能检测到那个按钮的按键。
  • 我们已经对蓝牙设备(Hcitool)进行了配对,我们可以连接到它(bluez-test-音频),但是我们有兴趣将这种方法迁移到C/C++。
  • 当设备连接并按下按钮时,hcidump的输出为: HCI嗅探器-蓝牙数据包分析器ver2.2 设备: hci0 snap_len: 1028过滤器:0xffffff HCI事件:模式更改(0x14) plen 6 状态0x00处理21模式0x00间隔0 模式:活动 ACL数据:处理21个标志0x02 dlen 17 L2CAP(d):cid 0x0041 len 13 psm 0 < ACL数据:处理21个标志0x00dlen 14 L2CAP(d):CID0x0047 len 10 psm 0 < ACL数据:处理21个标志0x00dlen 22 L2CAP(d):CID0x0047 len 18 psm 0 < ACL数据:处理21个标志0x00dlen 22 L2CAP(d):CID0x0047 len 18 psm 0 HCI事件:已完成数据包数量(0x13) plen 5 处理21包1 ACL数据:处理21个标志0x02 dlen 18 L2CAP(d):cid 0x0041 len 14 psm 0 < ACL数据:处理21个标志0x00dlen 14 L2CAP(d):CID0x0047 len 10 psm 0 HCI事件:已完成数据包数量(0x13) plen 5 处理21包1 HCI事件:已完成数据包数量(0x13) plen 5 处理21包1 HCI事件:已完成数据包数量(0x13) plen 5 处理21包1 HCI事件:模式更改(0x14) plen 6 状态0x00处理21模式0x02间隔2048 模式:嗅探
  • 我们一直在寻找蓝牙文档,但没有取得多大的成功。 如何使用Bluez在C/C++中检测蓝牙事件?
EN

回答 2

Stack Overflow用户

发布于 2015-07-08 18:37:20

我去年也做过类似的事。我确定的方法是使用libdbus-c++生成c++代理对象/类,以便通过dbus与bluez通信。

  • 确定由耳机实现的蓝牙接口。我使用了双脚,并在设备连接时对其进行了探索。您可以在这里手动控制和读取耳机状态,这对调试非常方便。
  • 生成、查找或创建所需接口的dbus xml描述。我手动地将api规范从bluez api文档转换成xml,但是我相信您也可以通过dbus内省来创建它们。
  • 使用dbusxx-xml2cpp生成代理对象
  • 确定按下按钮时调用的回调。
  • 根据需要将代理对象集成到代码中

您需要将代码链接到libdbus-c++,并将其安装在目标上。

您可以使用生成的代理对象来访问耳机的整个功能,它可能比按下按钮更有用!

票数 1
EN

Stack Overflow用户

发布于 2013-01-24 10:25:26

收集的hcidump是设备主机和控制器之间的日志。事件是控制器发送到设备主机的事件,命令是发送给设备主机的请求/响应。

蓝光编程指南:http://people.csail.mit.edu/albert/bluez-intro/

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

https://stackoverflow.com/questions/11352717

复制
相关文章

相似问题

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