BLE gatttool читает последовательные данные из bluno?
Я пытаюсь отправить данные через BLE из Bluno в Raspberry Pi (Raspian), bluez 5.50.
Хотя связь, кажется, в порядке. Я поражен тем, что не могу получить серийные данные из дескриптора уведомления.
Ниже то, что я пытался.
pi@raspberrypi:~ $ sudo gatttool -b <BLE-MAC-ADDRESS> -I
<BLE-MAC-ADDRESS>[LE]> connect
Attempting to connect to <BLE-MAC-ADDRESS>
Connection successful
[<BLE-MAC-ADDRESS>][LE]>
Notification handle = 0x0025 value : 32
Notification handle = 0x0025 value : 32
Notification handle = 0x0025 value : 32
Notification handle = 0x0025 value : 32
[<BLE-MAC-ADDRESS>][LE]>char-read-hnd 0x0025
handle : 0x0025 value : 01
Notification handle = 0x0025 value : 32
Notification handle = 0x0025 value : 32
[<BLE-MAC-ADDRESS>][LE]>
Таким образом, проблема здесь в том, что обработчик уведомлений "слушает" последовательные данные и возвращает значение ( 2 -> Hex:32) каждую 1 секунду от Bluno (как запрограммировано в Adurinosketch).
Но когда я пытаюсь получить это значение с помощью команды char-read (пробовал как handle & uuid), она всегда возвращает 01?!!!
В конечном итоге я хочу получить это значение в своем коде Python (для этого я использую Pexpect)
Любая помощь / направления приветствуются.
1 ответ
Хорошо, вот что я закончил делать в своем коде Python, чтобы получить значение
`
child = pexpect.spawn("sudo gatttool -b <BLUNO-MAC-ADDR> -I")
# Connect to the device.
print("Connecting to Bluno...")
child.sendline("connect")
child.expect("Connection successful", timeout=5)
print(" Connected!")
while True:
child.expect("Notification handle = 0x0025 value: ", timeout=10)
child.expect("\r\n", timeout=10)
resp = child.before
print(process_my_data(bytearray.fromhex(resp.decode("utf-8")).decode()))
`