LINUX.ORG.RU

Робота с COM-портом. Кол-во байт в буфере?


0

0

unsigned int bytes;
unsigned char buf[10];

/* Ждём пока в буфере не будет 10 байт, после этого читаем их */
while (bytes<sizeof(buf))
{
ioctl(fd, FIONREAD, &bytes); /* Собственно ждём... */
usleep(); /* пауза чтобы не згузить проц - может и не надо... */
}

read(fd, buf, sizeof(buf)); /* Читаем буфер...*/

Проблема. - цикл всегда проскакивает,
внезависимости от содержимого буфера...

Это решаемо? Натолкните на путь истинный....

anonymous

Ответ на: комментарий от anonymous

Ну как же то не умеет - буфер есть? - есть.
Значит и размер у буфера есть. Значит есть
функция для получения занятого места в буфере...
Это так... Мысли...

1) Если серьёзно - этот ioctl вытянут из книжки про программирование
ком-портов. И там чёрным по белому написано что он возвращает количество байт в буфере.

2) Селект мне не подходит. Мне нужно читать строго определённое количество байт из буфера, а не знать когда они там появятся.
тоесть если там данных меньше чем мне надо - то не трогать, пока внешний девайс (ну медленный он...) не пришлёт недостающие байты..

anonymous
()
Ответ на: комментарий от anonymous

Вопрос решён, косяк мой. Всем спасибо.

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