From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

como llamar a otro VI sin subvis

Hola,
Como puedo llamar a otro VI teniendo dos pantallas? es decir, tengo una pantalla ppal con una serie de botones. Quiero que al pinchar uno de esos me abra otra pantalla diferente, anteriormente asociada.
Si puede ser sin subVIS mejor.
Gracias
0 kudos
Mensaje 1 de 6
7.053 Vistas

Hola Cuaqui. Es posible hacer esto con la función "System Axec.vi" que encuentras en el menú de "Communication".

Este VI te permite abrir cualquier aplicación y/o archivo, en este caso, se trataría de tu VI. Sólo tienes que poner la ubicación del programa en el que está tu archivo y entre comillas la ubicación de tu archivo. Ver la imagen adjunta.

0 kudos
Mensaje 2 de 6
7.033 Vistas

En forma adicional a lo que menciona Ali84, cuando trabajas con VIs puedes tener mucho mas control tanto de como se ejecuta, el estado del panel frontal y si deseas esperar a que termine la ejecución del otro programa.

Para hacer esto utilizas VI Server. Lo que necesitas hacer es abrir una referencia hacia el VI que quieres llamar y en base a property nodes e invokenodes, vas a controlar el comportamiento y estado.

El invoke node de run tiene 2 parámetros, el wait until done (que se va a esperar a que termine el vi que llamaste para terminar su ejecución. Y el de Auto Dispose reference que solo si quieres que el otro VI se cierre solo debe de estar en false. SI cierras la referencia en el programa se cierra el otro VI.

http://digital.ni.com/public.nsf/allkb/F60C3F5BC762B62986256CCD0054F26E?OpenDocument

http://zone.ni.com/devzone/cda/tut/p/id/4062

Saludos

 

 

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 3 de 6
7.027 Vistas
Yo tuve un problema similar y lo resolví haciendo otro VI para la otra pantalla diferente.
Este VI lo configuré asi: en File - VI Properties - Category: Windows Appearance - Custom -Customize, seleccionas : Show from panel when called.
Si necesitas transferir datos de este VI a tu VI principal, deberas agregarle el codigo al VI de tu segunda pantalla. Esta solo consiste en agregar entradas y salidas con controles numericos o strings, etc. Ademas para que la pantalla no se quite inmediatamente, debes de poner tu codigo dentro de un while-loop y con un boton de tu pantalla deberas activar en codigo el stop de while loop para que el usuario pueda cerrar la pantalla cuando lo desee y pase el control al programa principal.
Desde tu programa principal generas el codigo para llamar a este VI enviando y leyendo los datos necesarios.
 
Realmente esto es dificil la primera vez, pero despues es muy sencillo.
 
 
Mensaje 4 de 6
7.001 Vistas
Hola primero decir gracias con esa duda y su respuesta me han ayudado bastante, y segundo es una duda relacionado no del como llamar y correr otro VI eso ya salio con las instrucciones de invoke node, pero por ejemplo si estoy tomando datos de los puerto serial y tcp en los dos VI, entonces  el segundo VI nada mas le digo que lea los puertos? no tengo que abrir ni cerrar nada? o tengo que dar alguna entrada al VI que mando llamar?. de antemano muchas gracias
0 kudos
Mensaje 5 de 6
6.623 Vistas

hola.

El problema que tengo es que utilizo la función Write To Measurement File y todo perfecto. Pero ahora quiero que los datos que yo guardo me los saque en grafica. Para esto utilizo Read From Measurement File. Cuando ejecuto el programa me da el error 4, y no sé solucionarlo. Porque aunque en la pagina de national instruments pone como ignorarlo, si lo ignoro el progama se sigue ejecutando pero no me sale la gráfica.

Entonces he pensado en poner la función Read From Measurement File en otro VI y llamarlo desde el anterior. He leido vuestros mensajes. Pero me sigue dando problemas. El System Axec o no lo tengo o por lo menos no lo encuentro. Y cuando hago lo que propone Edgar, me da error 7 del que todavía se menos.

Primero se me tienen que cargar los datos en el Write, para poder sacarlos por el Read, y si pongo "Show from panel when called"  cuando ejecuto el primer VI se me ejecuta el segundo y por tanto,no da tiempo a cargarse los datos y el Read no lee nada.

¿Alguien me podría ayudar?

0 kudos
Mensaje 6 de 6
6.461 Vistas