无法使用 Pygatt 和 BLE112 写入 BLE112 特性
Unable to write to BLE112 Characteristic with Pygatt and BLE112
我一直在尝试使用 pygatt 写入自定义 gatt 特性,而我尝试写入的 Bluegiga BLE112D.The 设备也是 BLE112(不是加密狗)。我一直在使用以下 python 脚本:
import pygatt
adapter = pygatt.BGAPIBackend()
adapter = pygatt.BGAPIBackend()
adapter.start()
adapter.scan(timeout=1)
device = adapter.connect('88:6b:0f:7e:4e:66',address_type=pygatt.BLEAddressType.public)
characteristic = "8fbfa190-1af2-427c-a22b-3da61b6b7162"
device.char_write(characteristic, bytearray([0x00, 0xFF]))
#check the characteristic
value = device.char_read(characteristic)
print(value)
adapter.stop()
我尝试写入的特性配置如下:
<service uuid="8fbfa190-1af2-427c-a22b-3da71b6b7166" advertise="true">
<description>Table</description>
<include id="manufacturer" />
<characteristic uuid="8fbfa190-1af2-427c-a22b-3da61b6b7162" id="xgatt_table">
<properties read="true" write="true" />
<value length="2" />
</characteristic>
</service>
-脚本成功连接适配器和设备。
-我可以很好地读取特性,写入时不会产生错误,但是当我再次读取特性时,值没有改变。
-我已经启用了日志记录并查看了输出,但那里的一切都显示了成功的过程。
-我可以使用第三方 BLE 应用程序以及 blegui 应用程序写入特性
我很确定问题出在 pygatt 脚本上,但我不知道问题出在哪里。
总结一下我正在使用的内容:使用 python 3 的 Pygatt 通过 windows 10 上的 BLE112D 连接到 BLE112A。
此问题已通过在 char_write
函数中添加 wait_for_response=True
作为参数得到解决。所以新的写函数调用是:
device.char_write(characteristic, bytearray([0x00, 0xFF]), wait_for_response=True)
我不完全确定为什么会这样,但我相信脚本是在写入新值之前从特征中读取的。
我一直在尝试使用 pygatt 写入自定义 gatt 特性,而我尝试写入的 Bluegiga BLE112D.The 设备也是 BLE112(不是加密狗)。我一直在使用以下 python 脚本:
import pygatt
adapter = pygatt.BGAPIBackend()
adapter = pygatt.BGAPIBackend()
adapter.start()
adapter.scan(timeout=1)
device = adapter.connect('88:6b:0f:7e:4e:66',address_type=pygatt.BLEAddressType.public)
characteristic = "8fbfa190-1af2-427c-a22b-3da61b6b7162"
device.char_write(characteristic, bytearray([0x00, 0xFF]))
#check the characteristic
value = device.char_read(characteristic)
print(value)
adapter.stop()
我尝试写入的特性配置如下:
<service uuid="8fbfa190-1af2-427c-a22b-3da71b6b7166" advertise="true">
<description>Table</description>
<include id="manufacturer" />
<characteristic uuid="8fbfa190-1af2-427c-a22b-3da61b6b7162" id="xgatt_table">
<properties read="true" write="true" />
<value length="2" />
</characteristic>
</service>
-脚本成功连接适配器和设备。 -我可以很好地读取特性,写入时不会产生错误,但是当我再次读取特性时,值没有改变。 -我已经启用了日志记录并查看了输出,但那里的一切都显示了成功的过程。 -我可以使用第三方 BLE 应用程序以及 blegui 应用程序写入特性
我很确定问题出在 pygatt 脚本上,但我不知道问题出在哪里。
总结一下我正在使用的内容:使用 python 3 的 Pygatt 通过 windows 10 上的 BLE112D 连接到 BLE112A。
此问题已通过在 char_write
函数中添加 wait_for_response=True
作为参数得到解决。所以新的写函数调用是:
device.char_write(characteristic, bytearray([0x00, 0xFF]), wait_for_response=True)
我不完全确定为什么会这样,但我相信脚本是在写入新值之前从特征中读取的。