Что нужно знать о Serial чтобы стабильно передавать данные ?

vlkam
Offline
Зарегистрирован: 17.02.2013

Сделал передачу данных между двумя ардуинками по Serial
Передаваться будут пакеты примерно байт по 30, но таких пакетов может быть подряд и штук 20

Какие засады могут быть ?

Одна засада, как я понимаю, это то, что пакет может не целиком сразу придти, а например половина и нужн о будет в следующем цикле ловить отстаток от пакета. Правильно ?

Geronimo
Offline
Зарегистрирован: 06.05.2013

переполнение буффера, потеря данных может еще случиться

vlkam
Offline
Зарегистрирован: 17.02.2013

Geronimo пишет:
переполнение буффера, потеря данных может еще случиться

Спасибо.

Бороться с этим планирую следующим образом :
В начале пакета, сразу после признака начала передачи, втыкать размер пакета в байтах и контрольную сумму.

При приеме искать признак начала передачи, принимать столько байт сколько указано и проверять их контрольную сумму

Взлетит такой способ ?

Geronimo
Offline
Зарегистрирован: 06.05.2013

Угу,

Дробить на пакеты, в заголовке размер, контрольная сумма, номер пакета, приемник проверяет целостность, в случае сбоя запрашивает повторить.

vlkam
Offline
Зарегистрирован: 17.02.2013

Geronimo пишет:
Дробить на пакеты, в заголовке размер, контрольная сумма, номер пакета, приемник проверяет целостность, в случае сбоя запрашивает повторить.

У меня пакет получается байт 30-50.
Стоит дробить еще или это приемлимый объем ?

Geronimo
Offline
Зарегистрирован: 06.05.2013

Думаю приемлемый) пособирай статистику, будут проблемы, уменьшай обьем, чем меньше размер - меньше скорость.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Можно, да скорее нужно, еще добавить между пакетами ответ от принимающей стороны, что пакет принят, тогда переполнения не будет. Иначе вдуем 30 пакетов, а приняты они или нет, неизвестно.