Discusiones sobre Productos NI

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

Ventana emergente sin detener adquisición

¡Resuelto!
Ir a solución

Hola a todos!

Tengo un VI que adquiere y genera datos. Cuando pulso un botón me sale un subVI, en forma de ventana emergente, con algunos comentarios sobre el programa, a modo de ayuda.

El problema es que al ejecutarse el subVI me detiene la adquisición, ¿es posible hacer que salga la ventana emergente y que no se detenga la adquisición en ningún momento?

 

Gracias de antemano.

 

Atentamente,

 

Lou

0 kudos
Mensaje 1 de 6
3.794 Vistas

Puedes hacer la adquisición desde un hilo y la llamada a la ventana desde otro. También puedes hacer una llamada no bloqueante con VI Server. Y por último, quizás puedas usar la ventana de ayuda contextual.

Mensaje 2 de 6
3.791 Vistas

Podrías extender un poco tu explicación, por favor. Es que aún soy un poco cateta en el tema de programar.

 

Gracias

0 kudos
Mensaje 3 de 6
3.789 Vistas
Solución
Aceptado por Lou_5486

Supongo que partimos de algo como lo siguiente:

inicio.png

Aquí la adquisición de bloquea hasta que se cierra la ventana emergente porque tanto la ventana como la adquisición están dentro de la iteración del bucle. Hasta que no finalizan todas las tareas del bucle no se pasa a la siguiente iteración.

 

Para evitarlo podemos tener dos bucles en paralelo.

hilos.png

Donde la adquisición es independiente de la ventana. El segundo bucle puede estar esperando a cerrar la ventana, pero el primero puede continuar.

 

También se podría hacer todo dentro del mismo bucle si se realiza una llamada no bloqueante. Para esto hay que utilizar VI Server y se indica que el VI principal no espere hasta que el subVI finalice.

VI Server.png

 

Y para acabar, puedes añadir una descripción a algunos controles del panel frontal y utilizar la ventana de ayuda contextual para que los muestre.

 

contextHelp.png

Mensaje 4 de 6
3.786 Vistas

Muchas gracias!

 

Esto es exactamente lo que quería.

 

Una última pregunta, ¿cual utilizarías tu para que el rendimiento del CPU no se resienta?

 

Saludos,

 

Lou

0 kudos
Mensaje 5 de 6
3.782 Vistas

Si la aplicación lo permite, yo utilizaría la ventana contextual porque no tendría que programar nada. Las otras dos opciones son muy parecidas. De ellas yo probaría primero con la de dos hilos porque, a priori, es un poco más sencilla. De todas formas dependerá de tu aplicación y cómo se puede integrar mejor.

 

Sobre el rendimiento, depende más de qué hagan los VIs y no tanto de como se abran sus ventanas. Al hilo de esto, he puesto funciones de Wait para en los bucles para evitar que la ejecución de estos lleve al PC a utilizar una cpu al 100%. Una opción mejor hubiera sido utilizar eventos. Estos métodos se pueden utilizar en tu subVI para que no consuma mucho tiempo de cpu.

0 kudos
Mensaje 6 de 6
3.778 Vistas