LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

¿cómo saber cuándo la comunicación serie terminó?

Estoy comunicando un dispositivo USB usando VISA, usé como base el ejemplo Basic Serial Write and Read.vi, sin embargo tengo que estimar el tiempo de espera que varía según la cantidad de bytes que lea ¿hay alguna forma de poner un ciclo while que finalice cuando la comunicación serie terminó?

 

La idea es quitar la espera (sequence) y poner un ciclo que esté verificando alguna señal del puerto que indique cuando la comunicación terminó haciendo el proceso lo más rápido posible sin perder datos. Agrego el código que estoy empleando.

 

 

pregunta foro.JPG

 

Gracias por la ayuda.

Fabio Tomas
0 Kudos
Message 1 of 4
(2,570 Views)

Buen día!

 

Una manera en la que podrías hacerlo es crear un ciclo que esté monitoreando constantemente (cada 10 ms por ejemplo) el número de bits que se encuentran presentes en el puerto: Si no hay bits disponibles sigues en el ciclo; cuando haya información disponible, sales del ciclo y haces la lectura. 

 

serial.png

 

 

Espero te sea de utilidad, 

 

Saludos!

José Alberto G.
National Instruments
ELP Support Engineer
www.ni.com/soporte
0 Kudos
Message 2 of 4
(2,518 Views)

Alberto.

 

Gracias por la respuesta, la probaré quitando la espera que es lo que no deseo ya que tendría que estimar el tiempo y podría ser que tenga los datos antes de que termine la espera ¿sabes si se pueden ocupar alguna de las propiedades de comunicación serie como DTR o XON?

 

 

nodo.JPG

Fabio Tomas
0 Kudos
Message 3 of 4
(2,498 Views)

Que tal, 

 

Esta link nos explica un poco acerca de la utilización del XON / XOFF para el control de flujo en una comunicación serial: 

 

http://www.brainboxes.com/faq/items/what-is-xon--xoff-software-flow-control-?u=1&utm_expid=2117399-8...

 

Como puedes ver, estas banderas sí nos servirían para establecer cuándo estar recibiendo y cuándo empezar una transmisión, sin embargo no creo que te puedan servir para el tipo de aplicación que quieres desarrollar. Aparte faltaría checar si el dispositivo serial que estás manejando soporta este tipo de control de flujo. 

 

En cuanto a lo de quitar la temporización en el código que anexé, habría que probar que funcione aunque siempre es recomendable tener algún tipo de temporización para permitir que el procesador no se sature y pueda ejecutar otras tareas.

 

Saludos! 

José Alberto G.
National Instruments
ELP Support Engineer
www.ni.com/soporte
0 Kudos
Message 4 of 4
(2,485 Views)