Есть АЦП, подключаемый к последовательному порту. Работает в режиме "запрос-ответ". Такие траблы:
Часто (~ в 80'ти процентах случаев) АЦП откликается со второго раза, т.е. с первая попытка закончилась вылетом read'а по таймауту. Что самое интересное, когда тот же самый АЦП (и с той-же линией связи) опрашивает контроллер (AVR) без всякой оси, то в 99.99 процентах случаев получается отклик с первого раза, с меньшим таймаутом.
Считываю не посимвольно, а сразу весь ответ АЦП (read на10 символов), поставил timeout в 0.1 с (VMIN = 1), что нормально для данного АЦП, VMIN поставил равным нулю, т.к. я понял, покурив Serial Programming Guide for POSIX Operating Systems и другие man'ы, что timeout на время блокировки read'а из /dev/ttyS* можно задать только в raw mode. Кроме того, если и VTIME и VMIN больше нуля, то ядро разблокирует read только после получения VMIN символов, если получен хотя-бы один за время VTIME. Т.е. задавать и VMIN и VTIME не имеет смысла - в случаи разрыва связи read будет заблокирован навечно.
Может у кого были аналогичные проблемы - куда копать?