pygatt:无法执行 device.subscribe()
pygatt: Unable to execute device.subscribe()
我正在尝试订阅 GATT 特性。
我已经在我的 BLE 设备中为 GATT 特性设置了 "Indicate"、"Notify" 和 "Read" 属性。
我能够连接到我的 BLE 设备并read/write连接到其他特性。
但是,我无法执行此特定特征的 device.subscribe() 函数。
当我使用
device.subscribe("845ce63c-d003-423c-8922-818676d34255", callback=handle_data)
我收到错误
pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout: Timed out
after 10.000000s waiting for
[]
在link
https://github.com/peplin/pygatt/blob/master/pygatt/device.py,订阅函数有参数"wait_for_response"
在我的代码中,如果我使用
device.subscribe("845ce63c-d003-423c-8922-818676d34255", callback=handle_data, wait_for_response=True)
显示错误
TypeError: subscribe() got an unexpected keyword argument
'wait_for_response'
如何消除这些错误并订阅该特征?
编辑:
我将 Read 和 Write 属性连同 Notify 和 Indicate 添加到特性中
我可以使用以下代码读取和写入特性:-
import pygatt
adapter = pygatt.BGAPIBackend()
try:
adapter.start()
device = adapter.connect('xx:xx:xx:xx:xx:xx')
print("Connected")
#value = device.char_write_handle(55, bytearray([0x00,0x01]), wait_for_response=True)
value = device.char_read_handle(55)
print(value)
finally:
adapter.stop()
但是,我无法订阅。
我真的卡在这里了。
非常感谢任何帮助!
重新审视这个问题后,我发现在添加一些延迟后,我可以订阅特性:
代码如下:-
import pygatt
import time
from binascii import hexlify
adapter = pygatt.BGAPIBackend()
def handle_data(handle, value):
"""
handle -- integer, characteristic read handle the data was received on
value -- bytearray, the data returned in the notification
"""
print("Received data: %s" % hexlify(value))
try:
time.sleep(5)
adapter.start()
time.sleep(5)
device = adapter.connect('xx:xx:xx:xx:xx:xx')
time.sleep(5)
device.subscribe("845ce63c-d003-423c-8922-818676d34255",
callback=handle_data)
time.sleep(5)
while 1:
pass
finally:
print("Adapter Stopped")
adapter.stop()
我正在尝试订阅 GATT 特性。
我已经在我的 BLE 设备中为 GATT 特性设置了 "Indicate"、"Notify" 和 "Read" 属性。
我能够连接到我的 BLE 设备并read/write连接到其他特性。
但是,我无法执行此特定特征的 device.subscribe() 函数。
当我使用
device.subscribe("845ce63c-d003-423c-8922-818676d34255", callback=handle_data)
我收到错误
pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout: Timed out after 10.000000s waiting for []
在link https://github.com/peplin/pygatt/blob/master/pygatt/device.py,订阅函数有参数"wait_for_response"
在我的代码中,如果我使用
device.subscribe("845ce63c-d003-423c-8922-818676d34255", callback=handle_data, wait_for_response=True)
显示错误
TypeError: subscribe() got an unexpected keyword argument 'wait_for_response'
如何消除这些错误并订阅该特征?
编辑:
我将 Read 和 Write 属性连同 Notify 和 Indicate 添加到特性中
我可以使用以下代码读取和写入特性:-
import pygatt
adapter = pygatt.BGAPIBackend()
try:
adapter.start()
device = adapter.connect('xx:xx:xx:xx:xx:xx')
print("Connected")
#value = device.char_write_handle(55, bytearray([0x00,0x01]), wait_for_response=True)
value = device.char_read_handle(55)
print(value)
finally:
adapter.stop()
但是,我无法订阅。
我真的卡在这里了。
非常感谢任何帮助!
重新审视这个问题后,我发现在添加一些延迟后,我可以订阅特性:
代码如下:-
import pygatt
import time
from binascii import hexlify
adapter = pygatt.BGAPIBackend()
def handle_data(handle, value):
"""
handle -- integer, characteristic read handle the data was received on
value -- bytearray, the data returned in the notification
"""
print("Received data: %s" % hexlify(value))
try:
time.sleep(5)
adapter.start()
time.sleep(5)
device = adapter.connect('xx:xx:xx:xx:xx:xx')
time.sleep(5)
device.subscribe("845ce63c-d003-423c-8922-818676d34255",
callback=handle_data)
time.sleep(5)
while 1:
pass
finally:
print("Adapter Stopped")
adapter.stop()