繁体   English   中英

BlueZ / Pybluez - 蓝牙LE扫描,同时连接到外围设备

[英]BlueZ/Pybluez - Bluetooth LE scan while connected to peripheral

简短问题:是否可以扫描LE设备,同时定期连接到某些设备并读取特征a)一般[协议是否允许]和b)使用BlueZ堆栈?

长问题:我正在编写一个Python脚本来扫描广告某个UUID的LE设备。 如果找到一个,我们应该连接,读取特定的特征值(调用此ValueA ),然后断开连接。 我们的想法是保持ValueA存在的实时列表。 我希望能够生成一个启动LE扫描的线程,并将广告事件收集到一个线程安全的容器中。 发现新设备时,应触发处理程序以读取ValueA

我使用PyBluez和BluePy (连接外围设备)的努力失败了。 当我使用终端命令( sudo hcitool lescan --duplicatessudo gatttool -I后跟连接和读取命令)时,如果我在开始扫描后尝试连接(扫描中止),则这些命令会失败

我很困惑,因为我注意到如果我在开始LE扫描之前通过gatttool连接到设备,我可以启动扫描并继续读取ValueA而不影响扫描,但反之亦然。

任何见解或良好的BlueZ编程文档将不胜感激。 在Ubuntu 14.10 Macbook Pro上使用BlueZ 4.1

我最近没有检查,但我不认为PyBluez可以做BLE。

您在扫描时尝试连接的问题是某些硬件发生的已知问题。 这是某些硬件特有的问题。 基本上你需要停止扫描,建立你的L2CAP / GATT连接,然后重新开始扫描......或购买一个没有这个问题的不同加密狗。

我在Python中用BLE完成的所有工作都是模仿hcitoolgatttool在Python中的作用。 这很不幸,但是没有库(我知道)还有BLE。 这是一个可以帮助您入门的代码片段: 使用python查找蓝牙低功耗

或者,您可以使用它提供的DBUS接口与Bluez进行交互。 我被告知你不能与不属于蓝牙配置文件的属性进行交互。 (因此,您可以与使用心率配置文件的BLE设备进行交互,但不能从加速度计读取值)

编辑:看来对GATT库现在: https://pypi.python.org/pypi/gattlib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM