Autor Tema: Programando entrada/salida puerto serie c#  (Leído 5701 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pescador1986

  • PIC10
  • *
  • Mensajes: 2
Programando entrada/salida puerto serie c#
« 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?

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Programando entrada/salida puerto serie c#
« Respuesta #1 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?

Desconectado pescador1986

  • PIC10
  • *
  • Mensajes: 2
Re: Programando entrada/salida puerto serie c#
« Respuesta #2 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}

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Programando entrada/salida puerto serie c#
« Respuesta #3 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?


 

anything