Discusiones sobre Productos NI

cancel
Showing results for 
Search instead for 
Did you mean: 

Comunicacion entre VI's

Solved!
Go to solution
Highlighted

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
Message 1 of 8
(209 Views)
Highlighted

Puedes utilizar variables globales.

 

Crea una variable global y ahí coloca un array.

 

Lee y escribe esa variable donde quieras en cualquier VI.

0 Kudos
Message 2 of 8
(180 Views)
Highlighted

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

0 Kudos
Message 3 of 8
(164 Views)
Highlighted
Solution
Accepted by topic author 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
Message 4 of 8
(154 Views)
Highlighted

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

0 Kudos
Message 5 of 8
(142 Views)
Highlighted

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?

0 Kudos
Message 6 of 8
(135 Views)
Highlighted

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
Message 7 of 8
(108 Views)
Highlighted

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.

0 Kudos
Message 8 of 8
(104 Views)