【发布时间】:2017-05-17 16:52:36
【问题描述】:
我正在尝试实现 C++ 代码(使用 bluez 5.43 和 dbus)从 BLE 传感器读取广告数据包。根据 bluez DBus 文档,有一个 StartDiscovery API 可用于扫描附近的设备。但是,我找不到任何 API 来存储/解析来自附近 BLE 设备的广告数据包。 advertising-api.txt 列出了 registeradvertisement API,但据我了解,它只能用于创建广告数据包而不是从外部设备读取(或者我错了吗?)有人可以指导我正确获取广告数据包的方法附近使用 bluez 和 DBus 的 BLE 设备?
【问题讨论】:
-
据我了解,您执行
StartDiscovery,然后Device对象在被发现时出现。这些对象的属性可能填充了来自广告包的数据。 -
@Velkan:感谢您的回复。老实说,我在这里有点困惑。我有一个 BLE 传感器,它以广告包的形式定期传输传感器读数。该信息也包含在低能量扫描响应中。所以我需要完整的响应来解析所需的数据。我正在尝试使用 dbus 和 bluez-5.43 来实现它。我认为没有任何特性会产生低能量扫描响应。如果我错了,请纠正我。
-
org.bluez.Device1 有 ServiceData 和 ManufacturerData。它们不是和广告api.txt 中的ServiceData 和ManufacturerData 一样吗?也许它们包含携带读数的 AdvData?
-
我尝试读取制造商数据,但即使温度发生变化,这些值也保持不变。该传感器有一个开源的 Android 应用程序。当我检查源代码时,该应用程序似乎正在读取完整的低能量扫描响应并解析必要的字段。应用程序中正确显示了温度变化。我想知道我做错了什么。
-
ManufacturerData 中的值是否包含至少一个正确读数?
标签: c++ bluetooth bluetooth-lowenergy dbus bluez