Red de conocimientos turísticos - Conocimientos sobre calendario chino - Estimados a todos, escribí un programa para verificar el puerto serie que recibe datos en Linux. Este es un bucle infinito de READ. Descubrí que el puerto serie necesita múltiples READ.

Estimados a todos, escribí un programa para verificar el puerto serie que recibe datos en Linux. Este es un bucle infinito de READ. Descubrí que el puerto serie necesita múltiples READ.

En primer lugar, el modo de almacenamiento en caché predeterminado de los archivos del puerto serie es sin búfer. En segundo lugar, el puerto serie no envía datos continuamente.

Por ejemplo, el puerto serie quiere enviarte 0x62, 0x77, luego envía 0x62 primero y luego 0x77, si lees() inmediatamente después de que envía 0x62, entonces solo obtienes 0x62 y 0x77. debe ser leído nuevamente.

Si quieres leerlo todo de una vez, hay dos formas.

1: Escriba su propia función para leer el puerto serie y llame a read

Por ejemplo

int tipc_read_socket( int sockfd, char *buf, int len; )

{

int count = 0; //El número de bytes leídos al mismo tiempo

int pos = 0 //total; *** número de bytes leídos

pos = 0

do {

count = read(sockfd, amp; buf[pos], len - pos );

//printf("tipc_read_socket: count[d]\n", count);

if(0 gt; count)

{

if( EINTR == errno )

continue

// Cuando se establece en sin bloqueo, la primera lectura Después de todo los datos.

return( pos );

}

if( 0 == cuenta ) break /* ¡No queda nada! return( pos }

2: Establece propiedades de entrada y salida.

struct termios newtio;

bzero( amp; newtio, sizeof( newtio )

newtio.c_cc[VTIME] = ***; p>

p>

newtio.c_cc[VMIN] = ***;

tcsetattr(fd, TCSANOW, amp; newtio);

VTIME y VMIN aquí; se leen los tiempos de espera.

Después de configurar, por ejemplo, si se lee 0x62 durante la lectura, esperará el tiempo que usted establezca. Si se lee 0x77 dentro de este tiempo, le devolverá 0x62 y 0x77 juntos. Este tiempo depende de la velocidad en baudios y debe establecerse en el tiempo máximo entre dos bytes consecutivos a una determinada velocidad en baudios.

ongji.js">