【发布时间】:2015-06-08 20:55:33
【问题描述】:
小问题:是否可以扫描 LE 设备,同时定期连接到一些并读取特性 a) 通常 [协议是否允许] 和 b) 使用 BlueZ 堆栈?
长问题:我正在编写一个 Python 脚本来扫描广告某个 UUID 的 LE 设备。如果找到,我们应该连接,读取特定的特征值(称为ValueA),然后断开连接。这个想法是维护ValueA 存在的实时列表。我希望能够产生一个线程来启动 LE 扫描并将广告事件收集到一个线程安全的容器中。当发现新设备时,应触发处理程序以读取ValueA。
我使用 PyBluez 和 BluePy(连接外围设备)的努力失败了。当我使用终端命令(sudo hcitool lescan --duplicates 和 sudo gatttool -I 后跟连接和读取命令)时,如果我在开始扫描后尝试连接,这些命令会失败(扫描中止)
我很困惑,因为我注意到如果我在开始 LE 扫描之前通过gatttool 连接到设备,我可以开始扫描并继续阅读ValueA 而不会影响扫描,反之亦然.
任何见解或良好的 BlueZ 编程文档将不胜感激。在 Ubuntu 14.10 Macbook Pro 上使用 BlueZ 4.1
【问题讨论】:
标签: python bluetooth-lowenergy bluez