2011-05-05 7 views
8

Estoy convirtiendo una clase serial Win32 a Linux (Ubuntu) una de las funciones requeridas de esta clase serial es "mirar" en el buffer serie para ver cómo muchos bytes están esperando en el puerto serie antes de leer el puerto serie.Obtenga el conteo de bytes esperando en un puerto serie antes de leer, linux

En esta situación de pedicura solo necesito saber si hay CUALQUIER octeto en el puerto antes de intentar leerlo.

En Windows usé COMSTATS pero parece que no puedo encontrar una función similar en Linux.

Mi pregunta es:

En Linux ¿Cómo leer la cantidad de bytes/caracteres de espera en un puerto serie sin sacarlos de la memoria intermedia de puerto serie?

Respuesta

10

Es necesario utilizar un ioctl

ioctl(serial_fd, FIONREAD, &bytes_avail); 

Este documento es muy mucho la pena leer, por eso y muchas otras cuestiones (modo canónico vs raw, etc.)

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

2

En el lenguaje C se puede pedir esto con ioctl:

int bytes_avaiable; 
ioctl(serial_file_descriptor, FIONREAD, &bytes_available); 
Cuestiones relacionadas