Discusiones sobre Productos NI

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

Comunicacion entre VI's

¡Resuelto!
Ir a solución

Hola,

 

Estoy con un proyecto en el cual necesito transmitir datos de una VI a otra VI, para ser mas exactos un array de una VI a otra y estoy buscando pero no encuentro información al respecto, es posible hacer esto? y si fuese posible, podría despues una vez con los 2 array's en el VI deseado, crear una pequeña función en C y usar estos arrays como entrada?

 

PD: Estoy usando LabView 2013

 

Gracias y Saludos.

0 kudos
Mensaje 1 de 8
1.611 Vistas

Puedes utilizar variables globales.

 

Crea una variable global y ahí coloca un array.

 

Lee y escribe esa variable donde quieras en cualquier VI.

=======
My Channel: https://www.youtube.com/@LV_Lab

0 kudos
Mensaje 2 de 8
1.582 Vistas

El problema que le veo a eso, serian las condiciones de carrera, no habría algo un poco mas refinado? 

0 kudos
Mensaje 3 de 8
1.566 Vistas
Solución
Aceptado por Gutmen

Creo que necesitas ser un poco más específico, ¿tienes dos VIs que te generan arrays? Por lo que entiendo, los arrays generados los quieres introducir a una función de C,.

Para la comunicación entre VIs puedes crear subVIs en un Vi principal, la salida de tus subVIs que te generan tu array le pones un indicador. En el panel frontal el indicador lo cableas en el diagrama de conexiones para que cuando mandes a llamar ese subVI en el VI principal te aparezca la salida del array generado.

Ahora en cuanto a lo de C, ¿Para que lo quieres hacer? ¿No puedes escribir el mismo código en C ahora en código G(LabView??

0 kudos
Mensaje 4 de 8
1.556 Vistas

Haz un VI especial para transferecnia de datos, se llama:  FGV Importante que hagas el VI no-reentrant. Con éste método puedes pasar info de un VI a otro y evitar condiciones de carrera. NO uses variables globales, normalmente no son una buena idea y traen más problemas que soluciones.

 

Como segundo método podrías usar una fila (Queue).

 

Si neceitas hacer operaciones en ambos VI con la información y compartir los resultados te recomiendo que uses un DVR (Data Value Reference), que es como un pointer en C y se encarca automaticamente de la concurrencia. (Combinado con un In-Place Structure).

 

Si neceitas más detalles avisar.

 

-A

---------------------------------------------------

Projektingenieur
Restbust, Simulations and HiL development
Custom Device Developer
0 kudos
Mensaje 5 de 8
1.544 Vistas

Los FGV no eliminan las condiciones de carrera. El hecho que sea no-reentrante no garantiza el orden de ejecución que deseas.

En mi opinión no hay problema con las variables globales, solamente hay que usarlas correctamente.

 

Estoy de acuerdo con alhebu, compartenos tus VIs, posiblemente no sea necesario usar 2 VIs separados. Y qué función quieres realizar con C?

=======
My Channel: https://www.youtube.com/@LV_Lab

0 kudos
Mensaje 6 de 8
1.537 Vistas

Muchas gracias a todos por vuestras ideas, al final me he decantado por el uso de variables globales y la verdad ni 1 pega y va todo perfecto y en cuanto al tema de la función que quería hacerme en C, me ha bastado con los bloques de LabView así que todo perfecto.

 

Saludos^^

0 kudos
Mensaje 7 de 8
1.510 Vistas

Me alegra saber que funciona para lo que lo necesitas.
Llámame desesperado por Kudos/Soluciones aceptadas, pero alhebu no fue la persona que propuso el uso de variables globales hehe.

=======
My Channel: https://www.youtube.com/@LV_Lab

0 kudos
Mensaje 8 de 8
1.506 Vistas