Обмен по SPI: как паковать переменные?

Dimanoss
Offline
Зарегистрирован: 29.05.2016
День добрый.  Пытаюсь организовать связь между двумя ардуинками по SPI, дело спорится, но встрял с пониманием такой задачки: как организовать обмен не одиночными переменными, а пакетами.  т.е. - 
 
вариант 1 - однородный массив (int[], byte[])
вариант 2 - несколько переменных с заранее оговорёнными типами и порядком (напр.: {int, long, int[3], int, byte, String})
вариант 3 - несколько переменных, но в произвольном порядке и  типизацией (набор объектов с ключами напр.:[{name="varName1", type="integer", value=32}, {name="varName2", type="byte", value=4}] итд.)
 
понимаю, что надо бы в транзакциях как-то определять начала и концы пакетов и переменных, но никак не могу дойти :-(
 
Если кто-то уже подобное делал с библиотекой SPI, поделитесь, пожалуйста.  
 
Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Пакеты всегда разнородной структуры будут? Принимающая сторона так или иначе должна знать, что она ждет

Так-то, передать любой объект - дело не хитрое. Перед отправкой можно прилеплять к любому пакету заголовок с идентификатором, длиной пакета, crc и т.д.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Dimanoss, основной и единственный принцип - принимать именно то, что отправлено.

Ну а остальное - частности, зависящие от особенностей конкретного проекта.