Что нужно знать о Serial чтобы стабильно передавать данные ?
- Войдите на сайт для отправки комментариев
Втр, 04/06/2013 - 10:00
Сделал передачу данных между двумя ардуинками по Serial
Передаваться будут пакеты примерно байт по 30, но таких пакетов может быть подряд и штук 20
Какие засады могут быть ?
Одна засада, как я понимаю, это то, что пакет может не целиком сразу придти, а например половина и нужн о будет в следующем цикле ловить отстаток от пакета. Правильно ?
переполнение буффера, потеря данных может еще случиться
Спасибо.
Бороться с этим планирую следующим образом :
В начале пакета, сразу после признака начала передачи, втыкать размер пакета в байтах и контрольную сумму.
При приеме искать признак начала передачи, принимать столько байт сколько указано и проверять их контрольную сумму
Взлетит такой способ ?
Угу,
Дробить на пакеты, в заголовке размер, контрольная сумма, номер пакета, приемник проверяет целостность, в случае сбоя запрашивает повторить.
У меня пакет получается байт 30-50.
Стоит дробить еще или это приемлимый объем ?
Думаю приемлемый) пособирай статистику, будут проблемы, уменьшай обьем, чем меньше размер - меньше скорость.
Можно, да скорее нужно, еще добавить между пакетами ответ от принимающей стороны, что пакет принят, тогда переполнения не будет. Иначе вдуем 30 пакетов, а приняты они или нет, неизвестно.