Какова структура сообщения / синтаксис для Bluetooth LE _commands_? - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь понять, как следующая информация преобразуется в сообщение на устройство BLE, с которого я пытаюсь прочитать некоторые сохраненные данные.Первая часть документации устройства дает мне базовый UUID и две службы.

UUID Base: 1212-efde-1234-567feathf890 
Service UUID: 0x1462 
Characteristic: 0x1463 (write/notify)

Это имеет смысл, и я понимаю, что для записи на устройство я отправляю сообщение, состоящее из службы / характеристики и базового UUIDто есть.00001462-1212-efde-1234-567feathf890 и 00001463-1212-efde-1234-567feathf890 соответственно.С помощью этой характеристики я присоединяю полезную нагрузку, которую я хочу записать.

Однако для чтения данных в документации указывается команда , часть документов для команд:

Command:
Message Name: Read the storage data with index, part 1(time) 
Message ID: 0x36 
Message Description: Read data (part 1: date and time) 
Length:  Request: 8 bytes / Response: 8 bytes

Я не знаю, как это интерпретировать.Я подумал, что это означает, что мне нужно было включить 0x36 в качестве полезной нагрузки для характеристики записи и что устройство ответит данными, когда будет записано это значение, но это, похоже, не работает.Как должно выглядеть сообщение для выполнения команды?

Примечание. Я подключаюсь к устройству и отключаюсь от него, и мои сообщения записи не выдают никаких ошибок, поэтому я предполагаю, что они успешны.Просто я не могу получить доступ к данным на устройстве (введено вручную, так что да, оно есть).

Обновление: хотя и не указано явно, возможно, что устройство использует последовательный интерфейс через BLE.

1 Ответ

0 голосов
/ 10 октября 2018

Оказывается, в документации пропущен важный момент.Этот диск использовался для передачи последовательно отформатированных данных.Вместо того чтобы использовать определения GATT, он писал и получал данные в последовательном формате UART.Таким образом, правильная «запись» будет использовать услугу и характеристику с данными, отформатированными как:

<start byte> <command byte> <data byte(s)> <stop byte> <checksum>

Полученные данные будут иметь тот же формат, но «<байт (ы) данных»> "Очевидно, было бы по-другому.В каждом случае они должны быть разложены на биты и проанализированы соответствующим образом.Это отличный способ сохранить встроенный последовательный интерфейс на устройстве полезным даже после обновления до *. 1006 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...