У меня есть система, где я наблюдаю странное поведение с последовательными портами, которое я не ожидаю. Ранее я видел это время от времени с адаптерами usb-to-serial, но теперь я вижу это и на собственных последовательных портах, с гораздо большей частотой.
Система настроена для запуска автоматических тестов и вначале будет выполнять некоторые задачи, которые приводят к выводу большого количества данных с последовательного устройства, в то время как у меня нет открытых портов. Устройство также перезагрузится само. Только линии TX / RX связаны. Контроль потока отсутствует.
После выполнения этих задач тестовое программное обеспечение открывает последовательные порты и сразу же выходит из строя, поскольку получает неожиданные ответы. Когда я воспроизводил это, я обнаружил, что если я открываю последовательный порт в терминальной программе, я вижу несколько килобайт старых данных (которые, похоже, были отправлены, когда порт был закрыт), немедленно вымывается. Когда я закрою эту программу, я смогу запустить тесты, как и ожидалось.
Что может вызвать это? Как Linux обрабатывает буферизацию последовательного порта, когда устройство закрыто? Если бы я открыл устройство, заставил его отправлять вывод, а затем закрыл его, не читая с него, это вызвало бы такую же проблему?