Обновить

C++ для STM32. Часть 1: организация пакетов данных для отправки по интерфейсам связи

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.1K
Всего голосов 6: ↑6 и ↓0+8
Комментарии4

Комментарии 4

В этой статье будет рассмотрена организация пакетов данных для их отправки по интерфейсам связи

а я что-то не обнаружил в изложенном кода отправки? Архитектура есть, конструкторы есть, а где отправка то? Хотя отправка на самом деле не так интересна! Отослать - записать (в уарт например) N байт задача тривиальная! Хотя если делать на прерывании что-то интересное тоже будет. Но гораздо интереснее как вы организуете прием! Во время приема надо не потерять синхронизацию с началом пакета, вот это серьезно не тривиальная задача.

Отправка правда дольно просто выполняется через встроенные функции либо юарта, либо ком-порта
А по поводу приёма информации будет отдельная статья, там много интересных моментов есть)

Есть ещё вариант использовать COBS + ProtocolBuffers (nanopb для ESP, под STM не знаю, что за либа).

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

Ну а ProtocolBuffers уже использовать или не использовать - на ваше усмотрение, в принципе можно и обычными структурами обмениваться, просто PB кроссязычный

а еще можно начало пакета пометить как-то совсем уникально. например, перейти на 9бит. или протянуть еще один проводок между мастером и слейвом(ами). и заодно в этом уникальном байте кодировать тип пакета - код может определять направление передачи и длину блока данных.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации