LINUX.ORG.RU

в чем причина ttyS0: X input overrun(s)


0

1

Работаю с устройством по порту RS-232, на устройстве крутится прошивка на базе Linux (её изменить я не могу). Когда я вручную с ним работаю через minicom - всё нормально. Однако, когда я работаю при помощи свой программы через QSerialPort либо при помощи микроконтроллера AVR->UART->RS232, то устройство иногда часто иногда редко - выплевывает ошибку «ttyS0: X input overrun(s)». Скорость всего 9600.

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

В чем причина этой ошибки? Возможно стоит вставить задержку между командами?

А flow control есть? minicom ведь по умолчанию включает hardware flow control.

И 1 мс это чуть меньше, чем передача 10 бит на скорости 9600, возможно, что ваша программа пишет байт в исходящий буфер com-порта, потом ждёт 1 мс и пишет следующий байт, а на вход устройства это приходит непрерывным потоком.

mky ★★★★★
()

После того, как подключишься к устройству миникомом - набери:
stty -a -F /dev/ttyS0

Узнаешь текущие настройки порта.
Ну а потом тоже самое, когда работает твоя программа.
Сравнишь настройки, найдешь разницу.

Dead ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.