Чтение записей журнала данных с устройства BLE - PullRequest
0 голосов
/ 13 декабря 2018

Я внедряю устройство BLE, которое хранит некоторые данные журнала на основе данных датчика, и приложение для iOS, которое действует как центральный для доступа к данным.

Я знаю, как читать данные характеристик GATT, но мне интересно, какчитать кучу с устройства.Есть ли стандартизированный способ сделать это?

Мой наивный подход был бы следующим:

  • Создать пользовательскую характеристику только для чтения (A), которая содержит количество записей журнала
  • Создать пользовательскую характеристику только для записи (B), которая содержит индекс записи
  • Создать пользовательскую характеристику только для чтения (C), которая содержит данные записи журнала с индексом (B).
  • Создайте пользовательскую характеристику записи (D) для удаления всех сохраненных записей.

Чтобы получить данные журнала, мне нужно прочитать количество записей (A), а затем выполнитьцикл и записать индекс в (B) и прочитать данные (C).

Это путь или есть лучший подход?

Мои записи данных журнала будут содержатьвременная метка и 8-битное значение с данными датчика.

1 Ответ

0 голосов
/ 08 января 2019

Это хороший способ, и он будет работать, но если вы будете всегда читать все записи, то будет неэффективно делать несколько записей из центрального (в цикле).Вместо этого вы можете просто выполнить однократную запись из центрального узла, тогда код периферийного устройства будет зацикливаться и отправлять все данные в центральный узел.В этом сценарии ваше решение будет иметь на сервере GATT следующее: -

  • Настраиваемый признак, который должен быть уведомлен.

И это все, что вам нужно,Если вы хотите прочитать данные журнала, вы можете использовать следующую последовательность: -

  1. Центральное устройство разрешает уведомления на периферийном устройстве.
  2. Периферийное устройство отправляет уведомление нацентральное устройство с первым набором журналов.
  3. периферийное устройство отправляет уведомление центральному устройству со вторым набором журналов.
  4. периферийное устройство будет продолжать отправлять уведомления в центральное устройство.до тех пор, пока список журналов не будет завершен.
  5. Периферийное устройство может отправлять специальное уведомление (например, все 0), указывающее, что все журналы были отправлены полностью.В качестве альтернативы, периферийное устройство может полностью прекратить отправку уведомлений, и неактивность будет указывать центральному пользователю, что больше нет данных для отправки.
  6. Центральный узел может затем отключить уведомления на периферийном устройстве, чтобы не было новых данных.отправлено.Центральный сервер может фактически остановить передачу журналов в любой момент, отключив уведомление.

Наконец, вы можете установить свою характеристику как индицируемую, а не как уведомляемую.Единственное отличие состоит в том, что будут подтверждения, когда это указывается, поэтому передача является более надежной.Однако передача также будет медленнее из-за дополнительных пакетов подтверждения.

Надеюсь, это поможет.

...