Получить количество байтов, ожидающих на последовательном порту перед чтением, Linux - PullRequest
8 голосов
/ 05 мая 2011

Я конвертирую последовательный класс Win32 в Linux (Ubuntu). Одной из необходимых функций этого последовательного класса является «просмотр» последовательного буфера, чтобы увидеть, сколько байтов ожидает последовательный порт, прежде чем читать последовательный порт.

В этой ситуации с педикюром мне нужно только узнать, есть ли на порту какие-либо байты, прежде чем пытаться его прочитать.

В Windows я использовал COMSTATS, но я не могу найти подобную функцию в Linux.

Мой вопрос:

В Linux Как вы читаете количество байтов / символов, ожидающих на последовательном порту, не удаляя их из буфера последовательного порта?

Ответы [ 2 ]

11 голосов
/ 05 мая 2011

Вам нужно использовать ioctl

ioctl(serial_fd, FIONREAD, &bytes_avail);

Этот документ очень стоит прочитать, для этого и многих других вопросов (канонический или необработанный режим и т. Д.)

http://www.cmrr.umn.edu/~strupp/serial.html

2 голосов
/ 05 мая 2011

На языке C вы можете задать это с помощью ioctl:

int bytes_avaiable;
ioctl(serial_file_descriptor, FIONREAD, &bytes_available);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...