SevEd
Bovino maduro
- Desde
- 23 Ago 2009
- Mensajes
- 413
- Tema Autor
- #1
Que tal mis amigos del corral
Tengo un programa que corre 4 hilos de ejecución, en LINUX. En uno de ellos se corre una rutina que lee al puerto serie (/dev/ttyUSB0) cada 10 ms.
Mi problema es que si se desconecta el puerto serie mientras el programa está aún en ejecución, el programa se queda colgado. Por lo que tengo que forzar el cerrado.
Cuando intento abrir nuevamente el programa, el descriptor de archivo del programa queda inaccesible
He implementado lo siguiente:
Con lo anterior detecto que el puerto serie se ha desconectado (se imprime en pantalla), pero el programa no cierra el descriptor de archivo, tampoco termina el programa, y el programa se queda colgado.
Alguna idea de lo que está pasando?? Por qué no se termina el programa?
Ahora bien, si solo leo el puerto serie en un loop infinito (sin ningun otro hilo) con la rutina arriba mencionada, el programa si se cierra el puerto y termina
Que raro que cuando esta rutina se encuentra en un hilo no funcione... Alguien sabe porque??
Saludos mis hermanos
Tengo un programa que corre 4 hilos de ejecución, en LINUX. En uno de ellos se corre una rutina que lee al puerto serie (/dev/ttyUSB0) cada 10 ms.
Mi problema es que si se desconecta el puerto serie mientras el programa está aún en ejecución, el programa se queda colgado. Por lo que tengo que forzar el cerrado.
Cuando intento abrir nuevamente el programa, el descriptor de archivo del programa queda inaccesible
He implementado lo siguiente:
u8BytesRead = Read_SerialPort(u32SerialFD, u8Buff, 1);
if(u8BytesRead > 0)
{
u8Sensor = u8Buff
}
else if (u8BytesRead == 0)
{
printf("Serial Port disconnected: Closing...\n");
close(u32SerialFD);
exit(0);
}
else
{
/* Nothing to do */
}
Con lo anterior detecto que el puerto serie se ha desconectado (se imprime en pantalla), pero el programa no cierra el descriptor de archivo, tampoco termina el programa, y el programa se queda colgado.
Alguna idea de lo que está pasando?? Por qué no se termina el programa?
Ahora bien, si solo leo el puerto serie en un loop infinito (sin ningun otro hilo) con la rutina arriba mencionada, el programa si se cierra el puerto y termina
Que raro que cuando esta rutina se encuentra en un hilo no funcione... Alguien sabe porque??
Saludos mis hermanos