无法使用Pygatt和BLE112写入BLE112特性

时间:2018-11-26 16:35:34

标签: python bluetooth-lowenergy bluegiga

我一直在尝试使用pygatt和Bluegiga BLE112D写入自定义gatt特性。我要写入的设备也是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脚本上,但是对于可能是什么问题却茫然不知所措。

总结一下我正在使用的是:Pygatt与python 3通过Windows 10上的BLE112D连接到BLE112A。

1 个答案:

答案 0 :(得分:0)

此问题通过在wait_for_response=True函数中添加char_write作为参数来解决。因此,新的写函数调用为:

device.char_write(characteristic, bytearray([0x00, 0xFF]), wait_for_response=True)

我不确定为什么会这样,但是我相信脚本是在写入新值之前从特征读取的。