gpt4 book ai didi

python - BlueZ/Pybluez - 连接到外围设备时进行蓝牙 LE 扫描

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:21 26 4
gpt4 key购买 nike

简短的问题:是否可以扫描 LE 设备,同时定期连接到某些设备并读取特征 a) 通常 [协议(protocol)是否允许] 和 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 的库。这是一个可以帮助您入门的代码片段:Finding Bluetooth low energy with python

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

编辑: 似乎 现在有 GATT 的库:https://pypi.python.org/pypi/gattlib

关于python - BlueZ/Pybluez - 连接到外围设备时进行蓝牙 LE 扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29437750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com