Discusiones sobre Productos NI

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

Còmo separa la cadena leida en el RS232

Hola que tal! Podrìa alguien ayudarmeEmoticono indiferente

 

    Apenas estoy familiarizandome con LabVIEW y no entiendo como separar o bien como interpretar los datos que recibo por el puerto serial. Mi caso es el siguiente: atravès del PIC 18F4620 envìo el dato de la temperatura actual, enseguida el del estado de  un ventilador, ecendido(1) o apagado(0) y en seguida su velocidad (calculada en el PIC por uso del PWM).

 

Mi pregunta entoces es como separar esta informaciòn que recibo del PIC en LabVIEW, para que la pueda utilizar en difentes aplicaciones: la temperatura actual en una gráfica, el estado del ventiladro en un led y su velocidad en un diciador de aguja.

 

Ahora bien, tengo la misma duda para enviar los datos al PIC, ¿de qué forma deben ser enviados?, quiero decir como se que no envio dos datos al mismo tiempo, etc.

 

Adjunto el VI con lo poco que he logrado hacer.

 

Gracias!

0 kudos
Mensaje 1 de 9
6.577 Vistas

Hola:

 

Para la comunicación es bueno que establezcas un protocolo. Es decir, si envías una temperatura, le pones antes o después un carácter específico (por ejemplo T) para saber que se trata de la temperatura, lo mismo para la velocidad u otras variables que quieras enviar.

Además este protocolo debe estar de acuerdo con el PIC para que interprete estos datos de forma correcta.

 

Por otra parte para el puerto de comunicaciones y la velocidad de transmisión puedes utilizar un solo control y variables locales.

 

Saludos.. Moisés

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 2 de 9
6.571 Vistas

Hola,

 

         Veo que este es un tema que sobre el cual siempre se presentan dudas, te adjunto un codigo (SIN PROBAR) que pienso puede servirte de ayuda a ti y a las demas personas con el mismo problema.

 

         Entre lo comun y lo facil opte por un paquete de datos de esta forma:

 

- 1 Byte de inicio (por default puse 0x7E)

- 1 Byte de cantidad de datos = N.

- N Bytes de datos.

- 1 Byte de checksum igual a la suma de los N bytes. (aqui deberia usarse un codigo CRC pero de momento opte por lo facil)

- 1 Byte de fin (por default puse 0x7E)

 

        En el caso del ejemplo que coloque (que es lo que quieres hacer o similar)

 

- Asumi que para encender el ventilador mandas '1' y para apagarlo '0'.

- Y que si mandas una 'R' el micro envia 4 bytes con las variables que mide en formato binario de esta forma: 2 bytes de temperatura, 1 byte de encendido, 1 byte de velocidad.

 

        Por ejemplo si el micro lee todo cero enviaria 0x7E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E

 

        Poniendo otros valores mandaria 0x7E, 0x04, 0x00, 0x12, 0x01, 0x1A, 0x2D, 0x7E

 

       Si quieres haz las pruebas mandado unas tramas fijas cuando reciba la 'R' para ver que funcione como lo imagino, y de funcionar, haces los cambios para tu data con el empaquetado adecuado y pruebas como se comporta, y en caso de problemas me comentas a ver que error pude cometer.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Descargar todos
Mensaje 3 de 9
6.553 Vistas

Luis_AM3C escribió:

Hola,

 

         Veo que este es un tema que sobre el cual siempre se presentan dudas, te adjunto un codigo (SIN PROBAR) que pienso puede servirte de ayuda a ti y a las demas personas con el mismo problema.

 

         Entre lo comun y lo facil opte por un paquete de datos de esta forma:

 

- 1 Byte de inicio (por default puse 0x7E)

- 1 Byte de cantidad de datos = N.

- N Bytes de datos.

- 1 Byte de checksum igual a la suma de los N bytes. (aqui deberia usarse un codigo CRC pero de momento opte por lo facil)

- 1 Byte de fin (por default puse 0x7E)

 

        En el caso del ejemplo que coloque (que es lo que quieres hacer o similar)

 

- Asumi que para encender el ventilador mandas '1' y para apagarlo '0'.

- Y que si mandas una 'R' el micro envia 4 bytes con las variables que mide en formato binario de esta forma: 2 bytes de temperatura, 1 byte de encendido, 1 byte de velocidad.

 

        Por ejemplo si el micro lee todo cero enviaria 0x7E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E

 

        Poniendo otros valores mandaria 0x7E, 0x04, 0x00, 0x12, 0x01, 0x1A, 0x2D, 0x7E

 

       Si quieres haz las pruebas mandado unas tramas fijas cuando reciba la 'R' para ver que funcione como lo imagino, y de funcionar, haces los cambios para tu data con el empaquetado adecuado y pruebas como se comporta, y en caso de problemas me comentas a ver que error pude cometer.

 

Saludos,


Hola que tal, gracias por la información!! Logré recibir un string desde Hyperterminal con tada la información que requiero en LabVIEW y todo se ejecuta correctamente, sin embargo, esto lo hago esperando escribir en el Hyperterminal cuando lo requiere el VISA Read y utilizando el modo Highlight Execution, pero cuando quiero hacer que VISA Read reciba la información desde el PIC ocurre el problema de que no concuerda el envio de uno con la recepción del otro. Actualmente estoy probando con Bytes at Port dentro de un ciclo While (sale cuando es mayor a 0) pero el programa en LabVIEW se queda en ese ciclo nunca sale. 

Alguien podría ayudarme? Gracias!

Adjunto uno foto del código.

0 kudos
Mensaje 4 de 9
6.454 Vistas

jeje se me olvidó la foto

0 kudos
Mensaje 5 de 9
6.453 Vistas

Hola,

 

        SI Bytes at Port es mayor que cero, pues hasta que no hagas un read de esos valores no va a cambiar la condición y se quedara en el ciclo, tendrias que colocar el read dentro por ejemplo para que una vez que leas los valores se salga del ciclo.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 6 de 9
6.424 Vistas

Problema resuelto, despues de mucho batallar he logrado enviar y recibir una trama correctamente, subo el código para quien quiera consultarlo

0 kudos
Mensaje 7 de 9
6.388 Vistas

Yo2

 

seria mucha  molestia pedirte que adjuntes el archivo INSTRUCTABLES en version 10.0??.

 

Saludos y Gracias.

0 kudos
Mensaje 8 de 9
6.047 Vistas

Discula por no responderte a tiempo, tiene meses que no abría mi cuenta jejejejeje, me he desconetado un poco de labview ultimamente. Bueno, creo que mi código esta en la versión 2010 de LabVIEW, mmmm antes utilizaba el 8.5 pero este esta en el 2010, además..... mmm creo que ya perdi el codigo. Bueno espero te haya servido, de cualquier forma cualquier duda coméntala! 

0 kudos
Mensaje 9 de 9
5.505 Vistas