Estoy desarrollando un programa q debe leer datos del puerto serial, en caso de q en un tiempo X de tiempo no se reciba el caracter de finalización de la comunicación, este debe volver a leer; el tipo de comunicación es canónica (se envía todos los datos de una vez); problema es el siguiente, cuando se corta la comunicación, "desconecto el cable por ejemplo", este deberia seguir en la espera, pero el programa se bloquea.
Aqui anexo el código para q lo vean:
*********** leer_puerto.c
.............
..............
timer = 2; //q espere 2 minutos
actual = hora_actualx();
estimada = actual + timer;
if (estimada > 59)
estimada = estimada - 60;
i=0;
while ((actual != estimada) && (i == 0))
{
res=read(fd,lectura,1024);
strcat(p,lectura);
if(lectura[res-1]==i1) /*i1 es el caracter q indica q es el final*/
{
p[strlen(p)]=NULL;
strcpy(valor_lt1, p);
i=1; //si recibio todo, i=1
}
actual = hora_actualx();
}
.........................
..........................
int hora_actualx()
{
struct tm *hora;
time_t temp;
int min;
time(&temp);
hora = localtime(&temp);
min = hora->tm_min;
return min; //devuelve minutos actuales del sistema
}
Si alguien me podría dar una mano en esto sería genial.
_Marcos_