La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/LabView/1269652-Estructura-Eventos-Conceptos-basicos.html

Estructura Eventos. Conceptos básicos

Estructura Eventos. Conceptos básicos

Publicado por Near (76 intervenciones) el 02/06/2011 14:28:48
Tengo dudas con el uso de las estructuras de eventos:

Estoy haciendo unas pruebas básicas para comprender su funcionamiento.

En primer lugar introduje uno de estos eventos dentro de un while. Los eventos que programe eran para el cambio de valor de un control (para hacer una suma) y el cambio del boton de stop para detener el bucle (es una recomendación que lei). Funciona todo correctamente ya sea usando evento de cambio de valor o de "mouse down".

Mi siguiente idea ha sido poner un bucle while en paralelo que también realice una suma (asi se veia la clara diferencia de usar eventos o no... sin eventos el while no para hasta pulsar el STOP mientras que el evento espera hasta que se produzcan cambios)

El problema viene si paro 1º el bucle del evento. De esta forma no puedo parar el 2º bucle while. El panel frontal se queda bloqueado.
Se supone que una vez detenido el primer bucle podría detener el 2º (al menos al revés si es posible)

Entiendo que se me escapa algún concepto básico sobre los eventos. Espero que alguien pueda ayudarme a entender mejor los eventos para asi poder irlos incorporando a mis programas y mejorar en eficacia.

Si alguien conoce algún manual sobre eventos o alguna página relacionada que me lo comente. La ayuda de Labview me ha servido pero no ha cubierto todas mis dudas.

Un saludo

Estructura Eventos. Conceptos básicos

Publicado por Untzilla (43 intervenciones) el 07/06/2011 23:50:24
Buenos días Near.

El concepto es muy simple.

Los funciones y o diferentes comandos programados en Labview se ejecutan en una secuencia de izquierda a derecha.

Si en nuestra aplicación tenemos un While dentro de otra. En un momento dado, decidimos que dar por finalizada la aplicación por lo que accionamos el pulsador que da por finalizada la función While.
El detalle que se te escapa es la siguiente:

Aunque le hayas pulsado al STOP, este comando/orden de finalizar el While se encuentra situado a la derecha de la función siendo así la última orden en ejecutarse y por consiguiente se ejecuta el evento o el segundo while.

Puedes ver el funcionamiento con la ejecución paso a paso o activando la bombilla de visualización.

Espero haberte ayudado.

Un saludo

Estructura Eventos. Conceptos básicos

Publicado por Near (76 intervenciones) el 08/06/2011 10:44:12
Gracias por tu respuesta:

Aqui adjunto una imagen con lo la idea que tenía para poder parar cualquiera de los dos bucles.
Lo que ocurre es que si le doy al STOP del bucle del evento se queda el panel frontal bloqueado.
Mi idea era poder para cualquiera de los dos bucles en cualquier orden.
El otro caso del evento que no aparece realiza una suma.

Si consigo hacer funcionar esto podre aplicar la idea a un programa mas complejo.

http://imageshack.us/photo/my-images/847/eventosv.jpg/

Un saludo

Estructura Eventos. Conceptos básicos

Publicado por Near (76 intervenciones) el 08/06/2011 11:08:41
Tras algunas pruebas he conseguido avanzar un poco:

Con la configuración de la imagen que añadi si cambio la configuración del botón STOP de "Switch until released" a "Switch when pressed" puedo parar 1º el bucle del evento sin que se quede bloqueado el panel frontal y posteriormente puedo parar el otro bucle (y en definitiva el programa completo).

Sin embargo si paro 1º el bucle del evento y tras esto cambio el valor del control "y" (que activaría el otro evento que no es visible en la imagen) entonces si queda bloqueado el panel frontal. No comprendo muy bien porque se bloquea, pero por lo menos he avanzado un poco.

Estructura Eventos. Conceptos básicos

Publicado por Untzilla (43 intervenciones) el 08/06/2011 20:51:33
Buenos días.

En primer lugar introduciría en tu programa inicial, una función "Wait" o "Wait until the next Multiple". De esta forma, evitaras que el programa quede bloqueado por una programación errónea. Puedes ver más información detallada sobre diferentes tipos de temporizadores en http://www.lawebdelprogramador.com/foros/LabView/1196395-Que_diferencia_existe_entre__Wait_y_Wait_until_.html

Si introduces dos bloques while en paralelo y no pones ninguna temporización, cuando entre el primer while se mantendrá en ella hasta que se pulse se de el cambio del STOP y entre en el evento.

Prueba también a utilizar dos "Time Loop" en paralelo. El "Time Loop" es un While temporizado, al que le puedes establecer la frecuencia de ejecución, prioridades,....

Prueba a ver qué resultado consigues. A gusto probaría pero ya no tengo acceso a un ordenador con Labview. Espero haberte servido de ayuda.

Que tengas un buen día

Estructura Eventos. Conceptos básicos

Publicado por Near (76 intervenciones) el 09/06/2011 10:30:57
Gracias de nuevo, y buena explicación de las diferencias.
Seguiré dándole vueltas con esta nueva información seguro que algo conseguiré.
Un saludo