URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8534
[ Назад ]

Исходное сообщение
"COM-порт, данные приходят не сразу"

Отправлено coderrr , 04-Дек-09 14:42 
Небольшой код открывает /dev/ttyS0 и шлёт туда разные пакеты.  Проблема в том, что они не всегда доходят. Например, отправляю 2 раза, через write, сам write возвращает оба раза целое положительное число, т.е. ошибок нет. Но устройство получает только вторую посылку.
Есть предположения, что это как-то может быть связано с буферизацией данных системы. Подскажите плиз куда копнуть или как хотя бы отладить это дело.

Содержание

Сообщения в этом обсуждении
"COM-порт, данные приходят не сразу"
Отправлено Andy_zzzzzz , 04-Дек-09 15:09 
>Небольшой код открывает /dev/ttyS0 и шлёт туда разные пакеты.  Проблема в
>том, что они не всегда доходят. Например, отправляю 2 раза, через
>write, сам write возвращает оба раза целое положительное число, т.е. ошибок
>нет. Но устройство получает только вторую посылку.
>Есть предположения, что это как-то может быть связано с буферизацией данных системы.
>Подскажите плиз куда копнуть или как хотя бы отладить это дело.
>

The tcdrain() function waits until all output written to the object referred to by fildes is transmitted.

ну или ioctl ( _port, TIOCDRAIN, 0 )

тут еще вопросик - вы с девайсом общаетесь по 232 интерфейсу или через конвертор  ? ( и вообще по какому интерфейсу общаетесь ? )

если через конвертор то проблема может быть в нем ....


"COM-порт, данные приходят не сразу"
Отправлено coderrr , 04-Дек-09 20:00 
>если через конвертор то проблема может быть в нем ....

нет, напрямую
а за TIOCDRAIN спасибо, как-то упустил её
буду пробовать


"COM-порт, данные приходят не сразу"
Отправлено ACCA , 12-Дек-09 21:51 
>>если через конвертор то проблема может быть в нем ....
>
>нет, напрямую
>а за TIOCDRAIN спасибо, как-то упустил её
>буду пробовать

Ещё учти, что в контроллере COM-порта (16550 и подобных) - буфер на 16 байтов. Ты мог не дождаться, пока они дойдут.


"COM-порт, данные приходят не сразу"
Отправлено аноним , 07-Дек-09 17:55 
>Небольшой код открывает /dev/ttyS0 и шлёт туда разные пакеты.  Проблема в
>том, что они не всегда доходят. Например, отправляю 2 раза, через
>write, сам write возвращает оба раза целое положительное число

А это "целое положительное число" равно размеру данных, которые вы писали?


"COM-порт, данные приходят не сразу"
Отправлено coderrr , 12-Дек-09 20:22 
>А это "целое положительное число" равно размеру данных, которые вы писали?

Да