Componer las tramas recibidas en el puerto serie (C#)

Respondiendo a la petición de nuestro compañero Pablo :
___________ Foro C# MSDN Spanish.

Cuando recibo los bytes en el evento DataRecived del SerialPort1; a veces estos bytes me llegan completos otras no; solucione este problema con tu idea de un bucle; solo q este bucle lo hice infinito, es decir, un while (true) y todo mi codigo para almacenar esos bytes y desplegarlos en en textbox1; pormedio del delegado; mi pregunta es ¿existe alguna otra manera para recibir esta trama completa desde mi inicio H01.......H3F;  de 19 elementos de longuitd; a veces me llegan H01....3F; de por decir 15 elementos de longuitud; y esto si lo soluciono con el bucle while; pero no lo quiero hacer infinito? espero haberme explicado bien y me puedas ayudar.

____________

Podéis descargaros el ejemplo pulsando sobre el link de 'attachments'... estaré encantado de responder a cualquier pregunta relacionada. Os invito a participar.
Saludos,
Pep Lluis,

Published Wed, Jan 24 2007 16:26 by peplluis
Filed under:

Comments

# re: Componer las tramas recibidas en el puerto serie (C#)

Friday, April 27, 2007 4:33 AM by aitzi

Hola!

Yo tengo un probleama parecido o casi igual. la cosa es que yo recibo unos datos desde el puerto serie y necesito analizarlos.

En mi programa, recibo byte a byte y tengo que completar una trama de 5 bytes (bueno los recibo como string). Despues miro el start y el fin, seguido el checksun y al final lo que queda.

Me gustaría saber como puedo hacerlo, es que no se muy bien si el ejemplo de arriba me sirve.

Para mi el start es 0xAA y stop 0xDS.

Espero que me ayudes.

Gracias

 

# re: Componer las tramas recibidas en el puerto serie (C#)

Thursday, January 31, 2008 9:54 AM by Alf

Hola , yo quisiera saber como hacer para manejar los datos desde el codigo y poder enviarlos por medio de un puerto serie, es decir para comunicar un externo de manera que yo lee envie informacion codificada, que codigo debo conocer para manejar las señales del puerto serie?

# re: Componer las tramas recibidas en el puerto serie (C#)

Thursday, January 31, 2008 10:17 AM by peplluis

Hola Aitzi y Alf,

Bien pero deberias concretarme, cual es la dificultat. Si te parece para poder concretarme mas, contacta conmigo directamente en la opcion que tienes arriba a la derecha [This Blog] -- Contact.

Espero tus noticias,

Pep Lluis

# re: Componer las tramas recibidas en el puerto serie (C#)

Friday, May 16, 2008 10:37 AM by Ricardo

Que tal!! Sr. peplluis estoy realizando un pequeño programa el cual consta de graficar los datos recibidos a través del puerto serie, mando los datos de 6 bytes (i.e. 499560) y despues mando un retorno de carro \r, realizo las conversiones pertinentes pero SIEMPRE se traba la maquina cuando lee los datos, estoy realizando todo lo que usted expone, no se que sea tiene alguna idea con la que me pueda ayudar? de ante mano gracias

# re: Componer las tramas recibidas en el puerto serie (C#)

Monday, May 19, 2008 12:25 AM by maleja

crei que nadie en este mundo, sabria resolverme unas dudas q tengo sobre las librerias y la forma de usarlas, para realizar comunicacion entre el computador y un micro por rs232...en realidad necesito ayuda..."muero si no la consigo"

# re: Componer las tramas recibidas en el puerto serie (C#)

Monday, May 19, 2008 1:42 AM by peplluis

Saludos Ricardo y Maleja,

Para poder intentar ayudaros, necesitaria que concretarais el punto concreto del problema. Deberias precisar donde teneis la dificultat o error. Os invito a contactar a traves de la opcion [This Blog][Contact]... estare encantado de leeros y por supuesto ayudaros... si esque esta a mi alcance!

Pep Lluis,

# leer datos del puerto serial en c#

Tuesday, July 01, 2008 3:46 AM by rogertrips

Hola... mira estoy haciendo un proyecto en el cual recibo datos por medio del puerto serial.. quiero saber como es que puedo manejar el tema de la recepcion.. es decir, de leer los datos que me envia el equipo al cual conecto el cable haciami pc. Mi proyecto es web... pero tb tengo un webservice... te agradeceria tu pronta ayuda.

si puedes lo respondes directo a mi blog o a mi correo..rmendoza@linurp.org

gracias

# re: Componer las tramas recibidas en el puerto serie (C#)

Thursday, July 03, 2008 1:42 AM by peplluis

Hola Roger,

En este mismo blog dispones de un 'TAG' dedicado a los puertos serie, tambien edite un libro hablando de los System.IO.ports lo encontraras en :

www.dotnetmania.com/.../Robot%20dispensador%20para%20MSDN%20V%C3%ADdeo.pdf

Si en lo anterior no encuentras lo que estas buscando, contactac de nuevo a traves de la opcion [contact] y concretame como puedo ayudarte.

Saludos,

# re: Componer las tramas recibidas en el puerto serie (C#)

Tuesday, July 15, 2008 8:44 PM by Freddy

Saludo PepLluis,

aunque mi pregunta se aisla un poco con el tema, quisiera saber si es posible comunicarse a partir de system.io.port a conexion de tipo paralelo o USB.

Si es posible como lo hago, tenes informacion acerca de ello. Esta informacion la necesito para un proyecto que etoy haciendo para la empresa donde actualmente trabajo.

De antemano agradesco su tiempo prestado

prontamente colaborare en el foro ya que para mi la conexion serial me funciona correctamente.

Gracias!

# re: Componer las tramas recibidas en el puerto serie (C#)

Friday, July 18, 2008 1:46 AM by peplluis

Hola Freddy,

Aunque tarde te respondere que eso dependera del fabricante del USB. La Idea es entender que USB se comunica con un Host aplicando toda una serie de protocolos en Stack donde el dispositivo se enumera, define que tipo de conexion...etc y pasa USB cada dispositivo necesita un Driver que acostumbra a suministrar el fabricante. En algunos casos el Driver mantiene compatibilidad para virtualizar un puerto serie y de esa forma podemos intercambiar informacion como si de un puerto serie se tratara... si te parece contacta a traves de blog y concretamos como puedo ayudarte, pues el tema es complejo para tratarlo como comentario.

Saludos,

Pep Lluis,

# re: Componer las tramas recibidas en el puerto serie (C#)

Tuesday, October 21, 2008 5:02 PM by Ricardo

Hola necesito que me digan como mandar mensajes y recibirlos atraves de puerto serie..estoy haciendo un programa como el mesenger..gracias..este es mi email...ricardoeljefe_707@hotmail.com

# re: Componer las tramas recibidas en el puerto serie (C#)

Monday, October 27, 2008 9:06 PM by rogertrips

Hola.. estaba viendo el blog, felicitaciones.. a pesar de ser algo AntiMicrosoft.. me parece recontra interesante tu aporte. Actualmente estoy programando un sistema usando VS2008 - c#. Serà vìa web. El asunto que en una parte del sistema tengo que recibir tramas mediante el puerto serial. Asi como prender y apagar algunos dispositivos. Todo es vìa web. Mi pregunta es.. como varian tus codigos? que using son necesarios? que librerias? no se si me puedas ayudar porque ando un poco confundido con esto. Muchas gracias.

Roger

rmendoza@linurp.org

# re: Componer las tramas recibidas en el puerto serie (C#)

Tuesday, October 28, 2008 6:28 PM by peplluis

Gracias por tu amabilidad,

Supongo que te refieres a una aplicacion ASP.NET, en tal caso entiendo que no existe ningun problema para llamar a las librerias System.IO.Ports y añadir la funcionalidad de acceso al puerto serie a la dll de tu aplication.

En todo caso para despejar dudas, permite un poco de tiempo para presentarte un ejemplo en el blog.

Espero tener-lo listo en un par de dias.

Saludos,

Pep Lluis,

# re: Componer las tramas recibidas en el puerto serie (C#)

Thursday, October 30, 2008 11:54 AM by peplluis

Ricardo... creo que para enviar/recibir mensajes a traves del puerto serie, pueden servirte alguno de los ejemplos :

msmvps.com/.../default.aspx

Saludos,

# re: Componer las tramas recibidas en el puerto serie (C#)

Tuesday, November 18, 2008 4:29 PM by Paco

Muy buenas, en mi caso tambien tengo que hacer una aplicacion web que acceda al puero serie, pero en mi caso (no se si sera tambien el caso de rogertrips) al puerto serie que debo acceder es al del servidor web donde estara alojada la aplicacion web, mi pregunta es si ¿con estas librerias puedo acceder al pto serie del servidor o simplemente sirven para acceder al pto serie del pc cliente?.

Saludos y felicidades por el blog nos ayuda mucho a los mas torpes...

# re: Componer las tramas recibidas en el puerto serie (C#)

Thursday, April 02, 2009 9:25 AM by luisao

Hola,

Estoy haciendo un programa para enviar tramas por el puerto serie a un hardware que posee un modulo Zigbee (hasta aqui todo OK!). El caso es que cuando mi hardware responde no soy capaz de recoger las tramas que vienen en hexadecimal.

He utilizado el ejemplo de PepLluis (tramaspuertoserie.zip) y lo he adaptado a mi programa pero no hay manera. En mi listbox veo correctamente los caracteres del 0 al 7 pero cuando es uno mayor o es una letra sale 3f, alguien sabe que significa y como se puede solucionar???? No se si es que no se utilizar el foreach, o la conversion a byte, la listbox...

Ando algo desesperado ya la verdad...

Os dejo aqui el codigo a ver si me podeis echar una mano

muchas gracias

# re: Componer las tramas recibidas en el puerto serie (C#)

Friday, April 03, 2009 3:36 AM by peplluis

Hola Luisao,

Efectivamente llevas razón, te ruego contactes conmigo a traves del Blog, opcion [Contact],

A nivel del compilacion 0xff lo interpreta como un int32 por lo que existe un lio con los encodings. Para resolverlo asigna los valores de byte usando expresiones en decimal, tambien debes añadir este mandato antes del open del puerto serie.

this.serialPort1.Encoding = System.Text.Encoding.Default;

El caso es que sin duda esto funciona:
byte Valor_Byte = 0xFF;
char Valor_Char = Convert.ToChar(Valor_Byte);
byte Recuperado = Convert.ToByte(Valor_Char);

... entonces estoy confundido en la parte donde se pierde.

Espero tus noticias,

Pep Lluis,

# re: Componer las tramas recibidas en el puerto serie (C#)

Monday, April 06, 2009 6:17 PM by Vanessa

Saludos PepLluis

Estoy haciendo un programa que reconstruye datos que llegan por el puerto serial estuve probando estos datos con los valores de voltaje que envio utilizando un potenciomentro junto a un ADC el caso es que comprobando los valores que me llegan por el puerto y comprobando con el osciloscopio veo que en el osciloscopio veo un valor los datos que llegan por el puerto serial estan todavia con el valor anterior y tarda un tiempo para que comience a llegar el nuevo valor es esta la demora en la lectura del puerto serie y no hay nada que se pueda hacer ? o es la manera en que leo el puerto ya que para la lectura en existen de diferentes metodos como readline(),readbyte ..

Agradesco mucho tu ayuda

Vanessa

# re: Componer las tramas recibidas en el puerto serie (C#)

Wednesday, April 08, 2009 1:30 AM by peplluis

Saludos Vanessa,

La recepcion de datos en el UART del PC es inmediata. Provablemente el detalle viene dado por la manera que estas procesando el buffer.

Si lo consideras adecuado, escribe a traves de la opcion [Contact] de este blog y comentamos el codigo que tienes implementado.

Saludos,

Pep Lluis,

# re: Componer las tramas recibidas en el puerto serie (C#)

Monday, May 25, 2009 10:51 AM by Raul

Saludos PepLluis

He estado navegando buscando información a cerca de la recepción de datos por el puerto serial y este blob, ha sido interesante, muy revelador.

Estoy terminando un programa en el cual debo de leer tramas del puerto serial.

Los datos se obtienen muy bien en ASCII, pero tengo el problema que cuando recibo los datos no los recibo al mismo tiempo, he tratado de componer la trama, pero no he tenido exito, no se vacia el buffer de datos y la variable se llena indefinidamente.

La trama no lleva ningun codigo al final que pueda leer....y definir el fin.  

Agradezco mucho la ayuda que pueda recibir

Raul

# re: Componer las tramas recibidas en el puerto serie (C#)

Wednesday, May 27, 2009 5:37 AM by peplluis

Hola Raul,

Si te parece mandame a traves de la opcion [Contact] de este blog, tal y como tienes el codigo... con eso intentare ofrecerte alguna alternativa.

Saludos,

Pep Lluis,

# re: Componer las tramas recibidas en el puerto serie (C#)

Tuesday, December 21, 2010 5:42 AM by Jose

Hola, yo estoy haciendo una aplicacion en c# en visual studio 2010, en la cual tengo que comunicarme con el puerto serie. Yo escribo un comando y el me debe responder. He usado el componente serialPort, lo que yo le escribo va perfectamente y el me contesta, pero esos datos no lo termino de recoger. ¿Alguien puede ayudarme?

# re: Componer las tramas recibidas en el puerto serie (C#)

Saturday, December 25, 2010 11:56 AM by peplluis

Feliz Navidad Jose,

Puedes utilizar la opcion [Contact], para enviarme tus dudas en privado... espero que pueda ayudarte.

Espero tus noticias,

Pep Lluis,

# como creo un socket para recibir datos por un puerto 5555 o superior en c

Monday, May 09, 2011 5:21 PM by ydo

necesito crear un socket para recibir datos y guardarlos como txt en c, me pueden dar un ejemplo

# re: Componer las tramas recibidas en el puerto serie (C#)

Monday, May 23, 2011 3:03 AM by peplluis

Hola ydo,

Deberias visitar los foros de MSDN, para ver si algun especialista puede aportarte ese ejemplo.

Saludos,

PepLluis,

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: