我正在尝试使用BLE开发与外部设备通信的应用程序。我决定将pygatt
(Python)与BGAPI
一起使用(使用BlueGiga加密狗)。
我正在与之通信的设备具有一组具有一系列特征的自定义主服务。根据他们的规格,他们有2个READ特征,8个NOTIFY字符和1个WRITE字符。最初,我想阅读两个READ字符中的一个,但我无法这样做。 他们的UUID不被视为特征。这怎么可能?我100%确定他们输入正确。
import pygatt
import bleconnect
import blelib
import logging
logging.basicConfig()
logging.getLogger('pygatt').setLevel(logging.DEBUG)
adapter = pygatt.BGAPIBackend(serial_port='/dev/tty.usbmodem1')
adapter.start()
# Find the device
result = adapter.scan(timeout=5)
for item in result:
scan_name = item['name']
scan_rssi = item['rssi']
scan_address = item['address']
if scan_name == bleconnect.TARGET_NAME:
break
# Connect
device = adapter.connect(address=scan_address)
device.char_read(blelib.CHARACTERISTIC_DEVICE_FEATURES)
我可以在调试消息中看到找到了所有NOTIFY和WRITE特性,但没有找到两个READ特性。
我缺少什么?
答案 0 :(得分:0)
这似乎是pygatt
API中的某种缺点。我设法仅使用bgapi
找到实际值。