La Web del Programador: Comunidad de Programadores
 
    Pregunta:  59890 - AYUDA PARA MANEJAR READTIMEOUTS CUANDO QUIERO LEER UN DATO D
Autor:  Diego
HOla!!

Estoy teniendo problemas recibiendo datos de un puerto serie. Cuando quiero leer un dato del puerto utilizando serialport.readbyte y no tengo conectado nada al puerto serie, el programa se queda esperando el dato por siempre y se cuelga.

Necesito algo que me avise que no hay nada en el puerto en vez de quedarse colgado. Encontre la propiedad readtimeout que debe ser lo que necesito, pero no se como usarla!! Cuando corro el programa y queda leyendo el puerto me sale un error de que no se controló timeout exception. busqué en msdn y google pero no ayudan mucho sobre como controlarlo.

Probe algo asi como While (Not (PuertoSerie.ReadTimeout))
Variable = PuertoSerie.ReadByte
End While

pero cuando alcanza el timeout, en vez de salir del lazo while, me vuelve a dar el error de que no controlo timeout exception.

Alguna idea?????

Gracias por la ayuda!!

  Respuesta:  Carlos londoño
El problema que tienes es que no controlas la excepción generada, debido a que si se cumple el 'timeout' del puerto serial, el programa se bloquea inmediatamente, por lo tanto, coloca tu código dentro de un "try - catch", el cual te va a controlar esta excepción.

Por ejemplo
do
try
Variable = PuertoSerie.ReadByte
catch ex as TimeOutException
' Cuando se cumpla el timeout el programa no va a quedarse colgado
' Solamente realiza lo que se encuentre en este "catch"

exit do
' El "exit do" te saca del loop
end try
loop