Leer un puerto Serie

22/01/2007 - 18:32 por emiliano.sutil | Informe spam
Hola a todos

Estoy haciendo un programilla que lee un puerto serie usando
System.IO.Ports
Uso la clase SerialPort de la siguiente manera:

mySerial = new SerialPort("COM1", 9600);
mySerial.DataBits = 8;
mySerial.StopBits = StopBits.One;
mySerial.ReadTimeout = 5;
mySerial.Open();
mySerial.DiscardInBuffer();
string datos = mySerial.ReadLine();


El problema es que me da el error
Exception:System.TimeoutException: Se excedió el tiempo de espera de
la operación.

Si comento la linea mySerial.ReadTimeout = 5;
entonces el programa se queda en la linea ReadLine() y de ahi no pasa y
no lee nada de nada

A alguien se le ocurre que estoy haciendo mal?

Un saludo

Emiliano Sutil

Preguntas similare

Leer las respuestas

#11 RFOG
23/01/2007 - 19:52 | Informe spam
El control de flujo, dependiendo del cableado y de la centralita, el
Handshake del componente.

También puede mirar el DtrEnable y DsrEnable, que se suelen usar con
puertos serie "especiales" como conexiones con CCTALK, RS485 y
similares para que la propia uart conmute.

En principio, el docklight se ajusta a lo recibido, pero tu lo tienes
que hacer a mano. Posiblemente tengas que poner el handshake a XON/XOFF
o a request to send, ya depende de lo que esté usando la centralita.

It happens that formulated :
RFOG ha escrito:
Pues si el docklight te recibe los datos, el problema está seguro en tu
programa.

El componente funciona bastante bien, lo he probado en varias
aplicaciones y salvo algún tiquismiquis, funciona de cine.

Es muy posible que estés configurándolo mal, casi seguro.

Revisa las opciones de bit de stop, paridad y control de flujo.




Lo tengo configurado asi

private SerialPort port = new SerialPort("COM1", 19200, Parity.None,
8, StopBits.One);

Con esa configuracion en el docklight me lee los datos de la
centralita, pero con mi programa no hay manera,
No lee ni un misero byte
¿que mas puedo configurar?



Un saludo
Respuesta Responder a este mensaje
#12 emiliano.sutil
23/01/2007 - 20:26 | Informe spam
POR FIN !!!!!!!!

Pues tenias razon con lo del DtrEnable
Al final lo he puesto exactamente asi

mySerial.DataBits = 8;
mySerial.StopBits = StopBits.One;
mySerial.DiscardNull = true;
mySerial.DtrEnable = true;
mySerial.RtsEnable = true;

y voilá a funcionar, ya me lee los datos de la centralita.

Ahora solo me queda procesarlo ;-)

Muchisimas gracias por tu ayuda

Un saludo

Emiliano Sutil
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida