Мне нужно разработать последовательный протокол, и я столкнулся с некоторыми вопросами, которые, как я полагаю, должны были быть рассмотрены в другом месте.
Поэтому мне интересно, есть ли какие-то рекомендации по передовому опыту в разработке последовательных протоколов. (Пожалуйста, либо укажите факт, который легко проверить, либо сослайтесь на авторитетный источник, если вы делаете заявление. ) Также приветствуются общие рекомендации для веб-сайтов/книг.
В частности, мне приходится иметь дело с такими проблемами, как
- разбор потока байтов на пакеты
- проверка правильности пакета (например, легко с помощью CRC)
- определение разумных типов ошибок, которые могут возникнуть (например, в последовательном потоке «точка-точка» вероятны спорадические одиночные ошибки и отброшенные серии байтов, но дополнительные фантомные байты маловероятны; тогда как при записи, хранящейся во флэш-памяти или на диске типы преобладающих ошибок разные)
- исправление ошибок или восстановление (если я обнаружу ошибку в пакете, могу ли я ее исправить? Если нет, могу ли я пересинхронизироваться с границей следующего пакета?)
- как сделать пакеты переменной длины устойчивыми к исправлению/восстановлению ошибок.
Какие-либо предложения?