Вы должны показать нам код.Я бы начал с использования cfmakeraw на последовательном порту.После того, как у вас все работает в необработанном режиме, вы можете внести изменения и посмотреть, как это работает.Вот список вопросов или вещей, которые вы можете проверить:
после изменения атрибута, используя, например, cfmakeraw, вызываете ли вы tcsetattr (...), чтобы применить ваше изменение?
Как вы можете доказать, что в буфере приема драйвера все еще есть данные?
Вы проверяете системный вызов на наличие ошибок?
каков результат фиксации вашей программы?
Редактирование на основе ваших комментариев: Ваш протокол "гарантия" .... => Проверь свое предположение!Непроверенная, кристально чистая гарантия является хорошим подтверждением «невозможной ошибки»
В основном: выбор неисправен или ваш серийный драйвер.Причиной сбоя последовательного драйвера является то, что аппаратное устройство не заполнено настолько, чтобы вызвать прерывание или потерять прерывание.