TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: pescador1986 en 22 de Diciembre de 2010, 08:52:28

Título: Programando entrada/salida puerto serie c#
Publicado por: pescador1986 en 22 de Diciembre de 2010, 08:52:28
Buenas:
Estoy haciendo un programilla de comunicaciones en el cual yo me comunico con un dispositivo llamado obdlink. He usado un componente de .net llamado serialPort.
Yo mando ordenes por el puerto serie con escritura4 = new byte[] { 0x41, 0x54, 0x53, 0x50, 0x30, 0x30, 0xD }; serialPort1.Write(escritura4, 0, escritura4.Length);, y en cuanto le llega el dispositivo me contesta a traves del puesto serie, pero a veces en el textbox donde lo escribo no se escribe lo que contesta, sino que se corta. Estos datos los he capturado en el evento data_receibed del componente. He probado a usar serialPort1.DiscardOutBuffer();  serialPort1.DiscardInBuffer(); para limpiar el buffer pero me sigue fallando. ¿Alguien puede ayudarme?
Título: Re: Programando entrada/salida puerto serie c#
Publicado por: fidodido18 en 05 de Enero de 2011, 12:25:23
Buenas:
Estoy haciendo un programilla de comunicaciones en el cual yo me comunico con un dispositivo llamado obdlink. He usado un componente de .net llamado serialPort.
Yo mando ordenes por el puerto serie con escritura4 = new byte[] { 0x41, 0x54, 0x53, 0x50, 0x30, 0x30, 0xD }; serialPort1.Write(escritura4, 0, escritura4.Length);, y en cuanto le llega el dispositivo me contesta a traves del puesto serie, pero a veces en el textbox donde lo escribo no se escribe lo que contesta, sino que se corta. Estos datos los he capturado en el evento data_receibed del componente. He probado a usar serialPort1.DiscardOutBuffer();  serialPort1.DiscardInBuffer(); para limpiar el buffer pero me sigue fallando. ¿Alguien puede ayudarme?
yo he tenido problemas parecidos, tienes que ver la propiedad timeout del puerto, si esta en -1 o un valor alto, ademas que la mejor forma de esperar un dato es enviando un fin de trama siempre igual, y leer el puerto esperando al final dicha trama.

para evitar error e pongo un timeout de 500 segundos, utilizo el evento del puerto serial, y utilizo la propiedad readto y coloca la trama que espero siempre al final.

si es basura a los 500mseg tomo la excepción y hago un readexisting a una variable string cualquiera y limpio el bufer.

me explico?
Título: Re: Programando entrada/salida puerto serie c#
Publicado por: pescador1986 en 11 de Enero de 2011, 10:20:26
Si te has explicado correctamente, muchas gracias. Ahora me surgio un problema estoy intentando leer velocidad, revoluciones y temperatura  y no me contesta correctamente, yo sigo mandando datos en hexadecimal pero parece que falla. Alguien sabe por que no los toma correctamente {0x01, 0x0D, 0xD}
Título: Re: Programando entrada/salida puerto serie c#
Publicado por: fidodido18 en 19 de Enero de 2011, 21:25:07
Si te has explicado correctamente, muchas gracias. Ahora me surgio un problema estoy intentando leer velocidad, revoluciones y temperatura  y no me contesta correctamente, yo sigo mandando datos en hexadecimal pero parece que falla. Alguien sabe por que no los toma correctamente {0x01, 0x0D, 0xD}
Como lo estas haciendo? muestra esa parte del codigo?