无法读/写BLE中的特征

时间:2020-03-24 11:31:34

标签: python-3.x bluetooth-gatt gatttool

我有一个BLED112加密狗和一个BLE设备,其中包含具有服务特性的GATT配置文件。 我已经安装了pygatt与我的BLE设备通信。

以下是我的python代码,用于连接到我的BLE设备并读取/写入特征:-

import pygatt
adapter = pygatt.BGAPIBackend()
#adapter = pygatt.BGAPIBackend()
adapter.start()
adapter.scan(timeout=1)
device = adapter.connect('30:F5:6A:01:2D:05',address_type=pygatt.BLEAddressType.public)
characteristic = "f1126ec4-6e99-5552-5286-55bc21d65776"
device.char_write(characteristic, bytearray([0x00]), wait_for_response=True)
value = device.char_read(characteristic)
print(value)
adapter.stop()

我能够连接到我的设备。 但是,我在读取或写入时收到以下错误:

C:\ Python \ Python37-32 \ lib \ site-packages \ pygatt \ backends \ bgapi \ bgapi.py”, 第570行,expect_any提高除外 pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout:超时 在等待10.000000s之后 []

我在写指令中包括了wait_for_response=True,但仍然遇到此问题。

我如何正确读取/写入特性?

PS:在扫描时,我发现上面的UUID属于“描述符”。

这是我收到错误的原因吗?

有没有办法在pygatt中写“描述符”(不是特征符)?

1 个答案:

答案 0 :(得分:1)

我最后通过将特征UUID更改为特征句柄来获得它。 以下是工作代码:-

import pygatt
import time
adapter = pygatt.BGAPIBackend()
#adapter = pygatt.BGAPIBackend()
adapter.start()
adapter.scan(timeout=1)
device = adapter.connect('30:F5:6A:01:2D:05',address_type=pygatt.BLEAddressType.public)
characteristic = "26"
device.char_write_handle(characteristic, bytearray([0x00, 0x09]), wait_for_response=True)
time.sleep(2)
value = device.char_read_handle(characteristic)
print(value)
adapter.stop()