Небольшой код открывает /dev/ttyS0 и шлёт туда разные пакеты. Проблема в том, что они не всегда доходят. Например, отправляю 2 раза, через write, сам write возвращает оба раза целое положительное число, т.е. ошибок нет. Но устройство получает только вторую посылку.
Есть предположения, что это как-то может быть связано с буферизацией данных системы. Подскажите плиз куда копнуть или как хотя бы отладить это дело.
>Небольшой код открывает /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 интерфейсу или через конвертор ? ( и вообще по какому интерфейсу общаетесь ? )
если через конвертор то проблема может быть в нем ....
>если через конвертор то проблема может быть в нем ....нет, напрямую
а за TIOCDRAIN спасибо, как-то упустил её
буду пробовать
>>если через конвертор то проблема может быть в нем ....
>
>нет, напрямую
>а за TIOCDRAIN спасибо, как-то упустил её
>буду пробоватьЕщё учти, что в контроллере COM-порта (16550 и подобных) - буфер на 16 байтов. Ты мог не дождаться, пока они дойдут.
>Небольшой код открывает /dev/ttyS0 и шлёт туда разные пакеты. Проблема в
>том, что они не всегда доходят. Например, отправляю 2 раза, через
>write, сам write возвращает оба раза целое положительное числоА это "целое положительное число" равно размеру данных, которые вы писали?
>А это "целое положительное число" равно размеру данных, которые вы писали?Да