07-14-2020 02:24 PM - editado 07-14-2020 02:28 PM
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.
¡Resuelto! Ir a solución.
el 07-14-2020 05:24 PM
Puedes utilizar variables globales.
Crea una variable global y ahí coloca un array.
Lee y escribe esa variable donde quieras en cualquier VI.
el 07-14-2020 10:34 PM
El problema que le veo a eso, serian las condiciones de carrera, no habría algo un poco mas refinado?
el 07-15-2020 01:45 AM
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??
el 07-15-2020 07:27 AM
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
el 07-15-2020 09:22 AM
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?
el 07-15-2020 05:49 PM
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^^
el 07-15-2020 06:18 PM
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.