问题标签 [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.

0 投票
1 回答
399 浏览

python-3.x - gattlib BLE 的读取和通知问题?

我正在使用 python3 中的库编写一个 Linux 应用程序,以在适配器和我的 Linux 设备gattlib之间发送和接收用户输入的数据。BlueSnap DB9 BLE我已经能够String从我的设备成功地向适配器发送数据,并在适配器的终端上看到了输出,但是我在从适配器接收数据时遇到了问题。

我正在按照这个示例使用gattlib来读取和写入数据。write_cmd我可以使用and函数写入数据,write_by_handle但我无法gattlib使用此处提到的任何读取函数读取数据或启用通知。使用 gattlib 时似乎没有启用通知,因为我重写的 on_notification 函数没有打印出我在那里添加的打印语句。

我已经确定写入和读取数据的句柄分别是0x00430x0046。以下是 serialio 提供给我的用于写入和读取的 UUID:UUIDs

使用bluetoothctl时,选择特性后,我可以将数据写入适配器。只有在启用通知后bluetoothctl,我才能读取数据。一旦我禁用通知,尝试手动读取会打印出全 0,而不是我想要读取的数据。gattlib在 python3中选择特征和启用通知的正确方法是什么?

更新:我能够启用通知。我hcidump在这两个bluetoothctl和我的 python 代码上运行,并确定我用于启用通知的句柄不正确。启用通知的正确句柄是0x0047. 一旦我意识到这个错误,我enable_notifications使用正确的句柄运行并将两个参数设置为True,并且能够在我的设备终端上启用通知并查看传入数据,因为我在适配器的终端上键入它。

0 投票
0 回答
124 浏览

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 测试示例:

蓝牙:

知道如何解决安装错误吗?提前致谢。

0 投票
0 回答
25 浏览

python-3.x - Pygattlib“符号链接的级别太多(40)”错误

我正在尝试将 ble 与我的树莓派零 2 w 一起使用。我正在使用 pygattlib。每当我连接到多个外围设备时,我都会收到“PyGattLib 错误:连接错误:符号链接级别过多 (40)”错误。例如,我可以通过连接到外围设备 1、断开连接、连接到外围设备 2、断开连接、尝试连接到外围设备 3 并得到上述错误来复制问题。我可以通过做来让它恢复正常sudo hciconfig hci0 down/up,但我想要更永久地解决这个问题。这是我的代码片段:

0 投票
0 回答
14 浏览

python - 如何使用 pygattlib 启用 BLE 通知

我的设备是 BLE。我想使用 pygattlib 读取数据。现在我可以读取数据,但数据不会因为通知关闭而改变。那么如何使用pygattlib开启通知呢?