问题标签 [gattlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - gattlib BLE 的读取和通知问题?
我正在使用 python3 中的库编写一个 Linux 应用程序,以在适配器和我的 Linux 设备gattlib
之间发送和接收用户输入的数据。BlueSnap DB9 BLE
我已经能够String
从我的设备成功地向适配器发送数据,并在适配器的终端上看到了输出,但是我在从适配器接收数据时遇到了问题。
我正在按照这个示例使用gattlib
库来读取和写入数据。write_cmd
我可以使用and函数写入数据,write_by_handle
但我无法gattlib
使用此处提到的任何读取函数读取数据或启用通知。使用 gattlib 时似乎没有启用通知,因为我重写的 on_notification 函数没有打印出我在那里添加的打印语句。
我已经确定写入和读取数据的句柄分别是0x0043
和0x0046
。以下是 serialio 提供给我的用于写入和读取的 UUID:UUIDs。
使用bluetoothctl
时,选择特性后,我可以将数据写入适配器。只有在启用通知后bluetoothctl
,我才能读取数据。一旦我禁用通知,尝试手动读取会打印出全 0,而不是我想要读取的数据。gattlib
在 python3中选择特征和启用通知的正确方法是什么?
更新:我能够启用通知。我hcidump
在这两个bluetoothctl
和我的 python 代码上运行,并确定我用于启用通知的句柄不正确。启用通知的正确句柄是0x0047
. 一旦我意识到这个错误,我enable_notifications
使用正确的句柄运行并将两个参数设置为True
,并且能够在我的设备终端上启用通知并查看传入数据,因为我在适配器的终端上键入它。
python - Gattlib 安装有 pip 问题
最近我一直在尝试使用 pip 将 gattlib 安装到 python,如下所示:
但结果就是这个错误:
我的目标是使用我的 PC 的内置 BLE 模块,以便使用 pybluez 库通过 python 进行通信。我使用的是旧版本的 Python,因为我想使用它的脚本是用 Python 2.7 编写的。到目前为止,我可以使用以下命令在 Python 3.8 中安装 gattlib 库:
而且我已经在 Python 2.7 和 Python 3.8 中都安装了 pybluez 库,当我用耳机测试它时它似乎正在工作。gattlib 库似乎也在 Python 3.8 中工作,因为我能够用它检测 ESP32 BLE 服务器,但在 Python 2.7 中它不起作用,因为 gattlib 库丢失了。Python 3.8 在尝试使用 BLE 时也需要 sudo 权限,知道如何避免这种情况吗?
测试时,我使用了以下 pybluez 测试示例:
蓝牙:
知道如何解决安装错误吗?提前致谢。
python-3.x - Pygattlib“符号链接的级别太多(40)”错误
我正在尝试将 ble 与我的树莓派零 2 w 一起使用。我正在使用 pygattlib。每当我连接到多个外围设备时,我都会收到“PyGattLib 错误:连接错误:符号链接级别过多 (40)”错误。例如,我可以通过连接到外围设备 1、断开连接、连接到外围设备 2、断开连接、尝试连接到外围设备 3 并得到上述错误来复制问题。我可以通过做来让它恢复正常sudo hciconfig hci0 down/up
,但我想要更永久地解决这个问题。这是我的代码片段:
python - 如何使用 pygattlib 启用 BLE 通知
我的设备是 BLE。我想使用 pygattlib 读取数据。现在我可以读取数据,但数据不会因为通知关闭而改变。那么如何使用pygattlib开启通知呢?