Ayuda puerto serial

SevEd

Bovino maduro
#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:
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?

Saludos mi amigos y gracias por su ayuda
 
#2
No tengo idea de programación de hilos en linux...pero si con el código anterior logras que te muestre en pantalla cuando se desconecta el puerto serie ¿por qué no intentas terminar el programa con un KILL? (se que es una manera no muy conveniente para terminar los programas pero por el momento tal vez te pueda funcionar)
 

SevEd

Bovino maduro
#3
¿por qué no intentas terminar el programa con un KILL?
Gracias por la sugerencia. Pero desafortunadamente, aunque haga eso (ya lo he hecho cuando se traba mi programa). El puerto serie no se cierra, por lo cual, para volver a correr mi programa necesito reiniciar mi pc, puesto que no es posible abrir nuevamente el puerto

Alguna otra sugerencia amigos bakunos??
 

SevEd

Bovino maduro
#4
Después de dar vueltas y vueltas, volví atrás, hice un programa donde no manejo hilos, solo leo el puerto serie en un loop infinito con la rutina arriba mencionada y en tal caso, si se cierra el puerto y termina el programa

Que raro que cuando esta rutina se encuentra en un hilo no funcione... Alguien sabe porque??

Saludos mis hermanos
 
Arriba