el 04-06-2012 04:00 AM
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
¡Resuelto! Ir a solución.
el 04-06-2012 05:08 AM
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.
el 04-06-2012 05:16 AM
Podrías extender un poco tu explicación, por favor. Es que aún soy un poco cateta en el tema de programar.
Gracias
el 04-06-2012 06:11 AM
Supongo que partimos de algo como lo siguiente:
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.
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.
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.
el 04-06-2012 06:18 AM
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
el 04-06-2012 06:37 AM
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.