Насколько я понимаю системный вызов read для последовательного устройства считывает нужное кол-во байт, а при следующем вызове считанные данные в файле устройства уже не видны. Наверно должен быть режим считывания в котором данные не удаляются и доступны для следующих вызовов read.
Подскажите, пожалуйста, куда копать.
