Не может читать / писать характеристики в BLE - PullRequest
0 голосов
/ 24 марта 2020

У меня есть ключ BLED112 и устройство BLE, которое содержит профиль GATT с характеристиками служб. Я установил pygatt для связи с моим устройством BLE.

Ниже приведен мой код python для подключения к моему устройству BLE и чтения / записи для характеристики c: -

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, в ожидаемом повышении exc exc pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout: Превышено время ожидания после 10.000000 ожидания []

Я включил wait_for_response=True в мою инструкцию записи, но я все еще получаю это проблема.

Как мне прочитать / записать в характеристику c без ошибок?

PS: во время сканирования я заметил, что указанный выше UUID принадлежит «дескриптору».

Это причина, по которой я получаю сообщение об ошибке?

Есть ли способ написать "дескриптор" (а не характеристику c) в pygatt?

1 Ответ

0 голосов
/ 26 марта 2020

Я наконец-то получил его, изменив характеристику c UUID на маркер характеристики c. Ниже приводится рабочий код: -

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()
...