Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2002, 09:25
Avatar de marcos25
marcos25
 
Fecha de Ingreso: noviembre-2002
Ubicación: España
Mensajes: 164
Antigüedad: 22 años
Puntos: 0
recibir datos por el serial

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_