Gracias por sus respuestas.
Solucioné el problema hace unos días utilizando el timeout en 500 y hago la comprobación de la conexión de las terminales en otro hilo.
Investigando el tema que me propuso
mamcx sobre los thread a parte, hago la comprobación del estado de las terminales en paralelo y ya no se me cuelga el programa mientras chequea las terminales.
Muchas gracias a todos. Me han ayudado mucho y he aprendido a utilizar una herramienta muy importante.
Saludos y hasta la próxima