Programación del puerto serie de Termios
Por ejemplo, el puerto serie te dará 0x62 y 0x77. Luego envía primero 0x62 y luego 0x77. Y si lees() inmediatamente después de que envíe 0x62, solo obtendrás 0x62. y leerá 0x77 nuevamente.
Si quieres leerlo todo de una vez, hay dos formas.
1: Escriba una 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; //Número de bytes leídos al mismo tiempo
int pos = 0 //Total * * * palabras leídas; Número de secciones
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)
Continuar;
//Cuando se establece en sin bloqueo, después de leer todos los datos por primera vez, el resultado por segunda vez es - 1.
Return (pos);
}
if(0 = = cuenta)break /*¡No queda nada! */
pos = contar;
} while(len gt; pos);
Return(pos);}
2 : establece las propiedades de entrada y salida.
struct termios newtio
bzero( amp; newtio, sizeof(new TiO));
new TiO . ;
nuevo TiO . c _ cc[VMIN]= * * *;
tcsetattr(fd,TCS anow & nuevo TiO);
donde VTIME VMIN . es el tiempo de espera de lectura.
Después de configurar, por ejemplo, si lees 0x62, esperará el tiempo que establezcas. Si 0x77 llega dentro de este tiempo, le devolverá 0x62 y 0x77. Este tiempo está relacionado con la velocidad en baudios y debe establecerse en el intervalo máximo entre dos bytes consecutivos a una determinada velocidad en baudios.