Discusiones sobre Productos NI

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

Extraer datos de un subVI sin que haya terminado la ejecución

Buenos días, me gustaría saber cómo se puede extraer datos de un subVI que está en ejecución sin usar los conectores. 

Yo tengo un VI principal, en este hay un RichTextBox (.NET), este VI llama a otro VI y éste a otro subVI que recogerá los datos. El problema es que tengo que pasar esos datos al VI principal mientras el subVI sigue un proceso contínuo por lo cual no puedo usar los conectores.

Supongo que tiene que ser con algún tipo de referencia o algo así, pero soy novato y no estoy seguro.

 

Saludos a todos. 

0 kudos
Mensaje 1 de 14
4.445 Vistas

Hola.

Como bien dices, tienes que pasar la referencia del indicador en el vi principall a la subvi en la que deseas que actualice los datos.

Tienes un ejemplo en ejemplo

 

Saludos.

Alipio

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 2 de 14
4.441 Vistas

 

 

 

0 kudos
Mensaje 3 de 14
4.431 Vistas

Hola buenos días, he mirado el ejemplo pero no termino de conseguir hacerlo funcionar.

 

En la siguiente foto aparece la referencia del RichTextBox que le paso a mi subVI.

 

VI_principal_referencia.jpg 

 

 

En el subVI tengo un Control Refnum al cual le paso el ActiveXContainer del RichTextBox.Pero no me aparece la opción de insertar texto.

 

 

subVI.jpg 

 

 

 

A modo de ejemplo pongo esta foto para ver cómo insertar texto en el RichTextBox. El problema es que sólo lo puedo hacer desde el VI principal.

 

 

 AppenText.jpg

 

 

Está claro que no es lo mismo conectar el PropertyNode al RichTextBox que al CtlRefnum. No sé, no me aclaro.

 

Saludos. 

 

0 kudos
Mensaje 4 de 14
4.429 Vistas

Hola.

 

Fijate que el modo de isertar texto que pones es un metodo y por tanto va en un invoke node ( flechita en la cabecera).

Sin embargo, en el subvi estas usando un protperty node ( herramienta en la cabecera) que no es lo mismo.

Susituye el property node por un invoke node y deberia funcionar.

 

Si no lo consigues, pon la vi ( o vis) para ver como se puede solucionar el asunto.

 

Saludos.

 

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 5 de 14
4.417 Vistas

Con un invoke node tampoco aparecía la opción de insertar texto. He probado todo lo que he podido y no consigo que aparezca esa opción. De momento voy a seguir trabajando en otras partes del proyecto porque no puedo perder más tiempo en esto. Te explico brevemente qué necesito hacer y seguramente me des una idea mejor, porque lo que quiero hacer es algo que creo que es común. Yo tengo un VI principal que tiene que mostrar un log del proceso (de momento log del proceso será lo que envíe los puertos de comunicación). Entonces el VI va avanzando y haciendo llamadas varios subVI's que acaban enviando órdenes por los puertos de comunicación. Lo que envío por los puertos lo escribo en un archivo, pero claro, no sé cómo escribir un string o array de un subVI en el panel principal de la aplicación (en tiempo real, o sea cuando se mande que se almacene en el RichTextBox). Como detalle te digo que no me interesa enlazarlo con conectores, ya que dentro del programa que será muy largo y habrá muchísimas llamadas a los subVI's de comunicación, haya que poner una referencia del RichTextBox.

 

Muchas gracias por tu tiempo. Perdona que no me explique muy bien, es que no he trabajado nunca en LabView. 

0 kudos
Mensaje 6 de 14
4.412 Vistas

Hola.

Te adjunto un ejemplo rapido de como hacerlo.

 

Puees copiar y pegar las referencias, nodos etc en tu programa.

 

Saludos.

Alipio

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
Descargar todos
0 kudos
Mensaje 7 de 14
4.410 Vistas

Gracias de nuevo, veo y entiendo claramente tu ejemplo, aunque todavía me falta una cosa. Ayer conseguí más o menos lo que tú me has enseñado ahora pero la parte que me falta no he conseguido hacerla. Lo que faltaría es que cada vez que haya un cambio en el string del subVI, se genere un evento que sea el que ejecute la función de escribir en el RichTextBox. Ahora está con un bucle y un temporizador, pero hay que conseguir que sólo se ejecute cuando haya cambios en el string. Con esta otra cosa me he peleado también mucho y no he conseguido detectar el evento de un subVi dentro del VI principal.

 

Saludos nuevamente. 

0 kudos
Mensaje 8 de 14
4.408 Vistas

Hola.

Que escriba solo si hay cambio se puede conseguir de diversas maneras.

La mas sencilla es comparando  el nuevo valor con el anterior y escribir solo si es diferente. Si es igual, no hacer nada.

 

Te adjunto ejemplo de como podria hacerse.

Asimismo, observa que la referencia al control se pasa como variable local. Esto ahorra cableado pero hay que ser cuidadoso con el orden de ejecucion

 

Saludos y espero que te sirva.

Alipio

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
Descargar todos
0 kudos
Mensaje 9 de 14
4.405 Vistas

Hola de nuevo.

 

¿Hay alguna razón especial para usar el richtextbox .NET?

Por la descripcion del programa,se podria usar un indicador string de Labview en la vi principal, en cuyo caso podrias crear una variable global para leer/escribir en el desde cualquier parte del programa.

 

Saludos.

Alipio.

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 10 de 14
4.400 Vistas