Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Leer datos binarios desde el puerto RS232 y graficarlos

¡Resuelto!
Ir a solución

Saludos a todos, pues no soy muy experto en esto de labview, apenas y voy comenzando a utilizarlo, pues la cuestion es que estoy realizando un VI para que me lea (solamente necesito lectura) desde el puerto serial RS232 números binarios de 8 bits (a través de una tarjeta FPGA) y esos números pasarlos a decimal y graficarlos, pero como repito no soy muy experto en esto y acudo a ustedes, realize un VI pero me tira un error, si alguien puediera decirme si estoy mal o una manera de realizar el VI seria de gran ayuda, Gracias!

 

Este es el error que me muestra:

 

http://digital.ni.com/public.nsf/allkb/5C6D69B31EA1B3E386257845005694BC

 

Entiendo que es como que no sabe que es lo que lee o que los formatos son diferentes, no sé si vale la pena mencionarlo pero esta idea la realize en matlab y use "uint8" cuando obtuve los números y me los grafico correctamente (entiendo que los paso de un solo a su equivalente en decimal), pero no sé si en labview es igual, lo quiero hacer en labview porque acabo de un tiempo matlab colapsa y supongo que con labview no sucedera eso.

 

aca dejo el VI

 

La versión de labview que utilizo es la 2013.

VI.jpg

0 kudos
Mensaje 1 de 12
5.960 Vistas

RM07 escribió:

Saludos a todos, pues no soy muy experto en esto de labview, apenas y voy comenzando a utilizarlo, pues la cuestion es que estoy realizando un VI para que me lea (solamente necesito lectura) desde el puerto serial RS232 números binarios de 8 bits (a través de una tarjeta FPGA) y esos números pasarlos a decimal y graficarlos, pero como repito no soy muy experto en esto y acudo a ustedes, realize un VI pero me tira un error, si alguien puediera decirme si estoy mal o una manera de realizar el VI seria de gran ayuda, Gracias!

 

Este es el error que me muestra:

 

http://digital.ni.com/public.nsf/allkb/5C6D69B31EA1B3E386257845005694BC

 

Entiendo que es como que no sabe que es lo que lee o que los formatos son diferentes, no sé si vale la pena mencionarlo pero esta idea la realize en matlab y use "uint8" cuando obtuve los números y me los grafico correctamente (entiendo que los paso de un solo a su equivalente en decimal), pero no sé si en labview es igual, lo quiero hacer en labview porque acabo de un tiempo matlab colapsa y supongo que con labview no sucedera eso.

 

aca dejo el VI

 

La versión de labview que utilizo es la 2013.

VI.jpg


Hola RM07:

 

Te indico un par de cuestiones que creo que debes considerar (adjunto figura para mayor claridad):

- 1.- En el bucle es importante poner un retardo para no saturar el microprocesador de la computadora.

- 2.- Si los datos te llegan como Uint8 te recomiendo que utilices la función String To Byte Array, que te pasa los datos leidos a un Array de 8 bits.

 

Por otra parte, cada vez que escribes T, ¿cuantos datos recibes? ¿50 ó 100? Porque no es exáctamente lo mismo.

 

Saludos y suerte.

 

Lectura RS.png

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 2 de 12
5.951 Vistas

Saludos, gracias por responder, como repito apenas y voy emepzando a usar labview, no se mucho pero voy aprendiendo, pues la cantidad de números binarios que el puerto me va enviar no lo se, es un tiempo indefinido, es por eso que no le puse un tiempo estipulado, pero gracias por la sugerencia, tu me dices que use la función String To Byte Array, pero en dónde coloco es función para luego graficarlos?

No se si los datos los recibo como uint8 como repito en matlab lo realize y solo le puse esa función (uint8) y por la grafica que me mostro tengo entendido que los convirtio en decimal y me los grafico correctamente, pero por el error que muestra labview o no sé si yo soy el que he cometido un error (es lo mas seguro), los formatos no son validos, por eso te pregunto, ¿dónde coloco la funcion String To Byte Array para graficarlos? ¿tengo que poner entonces otro tipo de gráfico?

Saludos y nuevamente muchas gracias

0 kudos
Mensaje 3 de 12
5.936 Vistas
Solución
Aceptado por el autor del tema RM07

RM07 escribió:

Saludos, gracias por responder, como repito apenas y voy emepzando a usar labview, no se mucho pero voy aprendiendo, pues la cantidad de números binarios que el puerto me va enviar no lo se, es un tiempo indefinido, es por eso que no le puse un tiempo estipulado, pero gracias por la sugerencia, tu me dices que use la función String To Byte Array, pero en dónde coloco es función para luego graficarlos?

No se si los datos los recibo como uint8 como repito en matlab lo realize y solo le puse esa función (uint8) y por la grafica que me mostro tengo entendido que los convirtio en decimal y me los grafico correctamente, pero por el error que muestra labview o no sé si yo soy el que he cometido un error (es lo mas seguro), los formatos no son validos, por eso te pregunto, ¿dónde coloco la funcion String To Byte Array para graficarlos? ¿tengo que poner entonces otro tipo de gráfico?

Saludos y nuevamente muchas gracias


Hola RM07 de nuevo:

Te adjunto figura donde indica donde poner la función String To Byte Array.

No hace falta que cambies de gráfico, pero como esta función te devuelve un Array de enteros, tendrás que ingresarlos en la gráfica de uno en uno. Por eso utilizo un bucle FOR.

 

Es importante que sepas el número de datos que recibes, o si es indefinido, para saber en qué momento debes escribir en el puerto serie el carácter T.

 

También es importante que delimites los datos con caracteres de inicio y de final con el fin de asegurarte que los datos son correctos.

Saludos y suerte.

Lectura RS2.png

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 4 de 12
5.925 Vistas

Saludos nuevamente, en verdad gracias por ayudarme, gracias por contestar.

Pues el número de datos que recibo es indefinido, no entiendo cuándo me dices lo del carácter T, eso es nuevo para mi no sé a que te refieres y no sé que tengo que hacer con ese caráter, tampoco se como delimitar los carácteres de inicio y fin, todos los datos los recibo desde el puerto serial, perdoname pero la verdad no entiendo mucho cuando me dices de los carácteres T, de inicio y de final.

Espero que no te molesten todas mis dudas, pero en verdad agradezo mucho tu ayuda.

0 kudos
Mensaje 5 de 12
5.922 Vistas

RM07 escribió:

Saludos nuevamente, en verdad gracias por ayudarme, gracias por contestar.

Pues el número de datos que recibo es indefinido, no entiendo cuándo me dices lo del carácter T, eso es nuevo para mi no sé a que te refieres y no sé que tengo que hacer con ese caráter, tampoco se como delimitar los carácteres de inicio y fin, todos los datos los recibo desde el puerto serial, perdoname pero la verdad no entiendo mucho cuando me dices de los carácteres T, de inicio y de final.

Espero que no te molesten todas mis dudas, pero en verdad agradezo mucho tu ayuda.


 

Disculpa, pero me equivoqué.

Quise decir el carácter 1 (en vez de T)  que escribes en cada iteración. ¿Es necesario que escribas 1 para que comience a enviar datos?

 

Por otra parte, si tienes acceso al equipo que envía los datos, puedes hacer que envíe estos datos con un carácter de inicio y otro de final, para que cuando recibas ese carácter de inicio, los datos y el carácter final te aseguras que la comunicación es correcta. Pero primero intenta conseguir la representación correcta de los datos que llegan por el puerto serie.

 

Saludos

 

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 6 de 12
5.919 Vistas

Muchisimas gracias, pues por lo que he realizado tengo entendido que el equipo que me manda los datos los envia como binario de 8 bits, tomare en cuenta tus sugerencias, te avisare cuál es el resultado final, ojala y pues, funcione correctamente, gracias por tu ayuda

0 kudos
Mensaje 7 de 12
5.915 Vistas

Ah! se me olvidaba, no, no es necesario enviar el carácter "1" para que empieze a enviar datos el equipo

0 kudos
Mensaje 8 de 12
5.913 Vistas

RM07 escribió:

Ah! se me olvidaba, no, no es necesario enviar el carácter "1" para que empieze a enviar datos el equipo


Pues entonces no tiene sentido que escribas ese carácter para recibir datos.

 

Suerte...

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 9 de 12
5.909 Vistas

Saludos, muchas gracias por tu valiosa ayuda, en serio que tu ayuda fue muy grande, al final lo logre, se pudo, obtuve una cantidad de números binarios de 8 bits y con la función que tu me recomendastes me funciono bien y los grafique, en serio muchas gracias por tu valiosa ayuda, quise hacer repetitivo el grafico porque al cabo de un tiempo solo me queda la linea recta en un valor, pero nose como se hace, pero muchas gracias, estaba graficando un PID, y pues la grafica me salio, en serio muchas gracias! PID.jpg

0 kudos
Mensaje 10 de 12
5.849 Vistas