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

Исходное сообщение
"COM-порт: read читает меньше, чем возвращает ioctl FIONREAD"

Отправлено unixcoder , 18-Мрт-09 19:17 
Программирую COM-порты. Перед чтением проверяю с помощью ioctl количество данных в буфере порта, а затем считываю всё. В порт приходит массив данных в 32 байта, ioctl возращает 32.
Считываю 32, но read читает почему-то по 8. Может какието хитрые настройки нужны? Подскажите пожалуйста.

Содержание

Сообщения в этом обсуждении
"COM-порт: read читает меньше, чем возвращает ioctl FIONREAD"
Отправлено ACCA , 19-Мрт-09 00:53 
>Программирую COM-порты. Перед чтением проверяю с помощью ioctl количество данных в буфере
>порта, а затем считываю всё. В порт приходит массив данных в
>32 байта, ioctl возращает 32.
>Считываю 32, но read читает почему-то по 8. Может какието хитрые настройки
>нужны? Подскажите пожалуйста.

Можно насильно сделать буферизованный ввод, размер буфера 32 и читать с помощью fread.

Гораздо безопаснее (и переносимее) считывать всё, что пришло и складывать в свой буфер. Как наберётся 32, значит готово. Вообще не проверяя через ioctl и не надеясь, что получится прочитать всё сразу.