Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Structure Event (curieux !!)

Je remarque une chose qui me semble curieuse (qu'en pensez-vous ?)

 

Quand on configure un Event_Case dans une Structure Event, ou peu activer (ou non)

le blocage du Front Panel pendant l'execution de cet Event_Case.

 

off/on : Lock front panel (defer processing od user actions) until this event case completes

 

Nous sommes bien d'accord que cette phrase dit que le Front Panel est verrouillé jusqu'a la fin du traitement de l'événement dont question.

 

en dessous, une image + fichier joint (pas de snippet car une variable locale).

 

Le bouton_A est capturé par l'event "bouton_A : value change" (option lock Front Panel: OFF)

Le bouton_A est placé "dans" l'event_A.

 

Le bouton_B est capturé par l'event "bouton_B : value change" (option lock Front Panel: ON)

Le bouton_B est placé "dans" l'event_B.

 

Pour l'événement du bouton_A : une tempo de 10sec, et j'allume une Led.

Pour l'événement du bouton_B : une temp de 50ms

 

Tout ceci normalement donne quoi (?) :

 

1) Run

2) un clic sur bouton_A : la Led s'allume (pendant 10sec)

3) un clic sur le bouton_B : on ne "voit" rien mais l'event "B" est réalisé, soit une tempo de 50ms

   pendant ces 50ms le FP est bloqué ... ensuite le FP est à nouveau accessible.

 

Lock front panel until this event case completes   ... donc ici, pendant 50ms

 

et bien pas du tout ... Smiley surpris

Le Front panel reste bloqué, non pas pendant 50ms, mais pendant 10sec

Tant que l'événement A n'est pas terminé ... B ne se termine pas. (??)

 

Là ... Il y a un truc que je ne comprends PAS !

 

Bench_1.png

 

 

 


Message 1 sur 12
4 250 Visites

 

J'ai trouvé en partie ... mais il "reste" quelque chose de curieux.

 

Il faut attendre la fin de l'event_A pour que l'évent_B soit activé ... (normal)

 

Par conre, le lock du Front panel, lui, est activé dès que je touche le bouton_B ... alors que l'Event_B n'est "pas encore" en cours.

 

B doit attendre la fin de A (ça, c'est normal)

Mais le lock demandé du Front Panel ... lui ... est actif immédiatement.

 

Dès que B est sur la "Pile événements de la structure" ... l'événement attend, mais l'option Lock est réalisée de suite.

 

 

 

Message 2 sur 12
4 249 Visites

Intéressant. Je ne savais pas, je n’ai pas vérifié, mais je vais le faire demain.

 

A ta lecture, j’arrive à la même conclusion, il suffit qu’un évènement de type “Lock front panel until this event case completes” soit dans le buffer de la structure event pour bloquer l’IHM, même s’il ne s’exécute pas encore.

 

Et si j’ajoute par programmation un nouvel évènement dans le buffer de type « unlock » (je ne déverrouille pas l’IHM quand même, démontrer un bug).

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS

Message 3 sur 12
4 236 Visites

Prends mon snippet Luc, il y a tout ce qu'il faut pour constater la chose.

 

clic sur A

et immédiatement après clic sur B

 

B sera activé "une fois", et ensuite tout est bloqué pendant 10 sec.

 

(si tu clic 2x sur B .... le bouton B "bougera" une fois tout de suite ... et une 2eme fois à la fin des 10sec)

0 Compliments
Message 4 sur 12
4 230 Visites

"il suffit qu’un évènement de type “Lock front panel until this event case completes” soit dans le buffer

de la structure event pour bloquer l’IHM, même s’il ne s’exécute pas encore"

 

moi, je pense que l'info "Lock FP until ...." n'est pas mise dans le buffer ... elle est activée directement.

Si l'info était mise dans le buffer, elle "accompagnerait" l'Event auquel est associé

et serait activée en même temps que "son" Event, pas avant.

 

(Pour moi, "Lock FP until ..." n'est pas un Event en soi, c'est une propriété d'un Event.)

0 Compliments
Message 5 sur 12
4 228 Visites

Ceci pourrait apporter un peu de lumière...

 

By default, when an event enters a queue, LabVIEW locks the front panel that contains the object that generated that event. LabVIEW keeps the front panel locked until all Event structures finish handling the event. While the front panel is locked, LabVIEW does not process front panel activity but places those interactions in a buffer and handles them when the front panel is unlocked.

 

 

Texte copié à partir d'ici.

Message 6 sur 12
4 221 Visites

JB a écrit :Ceci pourrait apporter un peu de lumière...

 

merci pour la lumière!

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS

0 Compliments
Message 7 sur 12
4 203 Visites

Le Lock FP est prioritaire Smiley surpris

 

ok, ça explique ! (merci JB)

0 Compliments
Message 8 sur 12
4 196 Visites

C'est aussi pour sa qu'on dit toujours que le code dans une structure event doit s'exécuter "instantanément". D'une manière générale pour faire une action longue il faut gérer sa dans une autre boucle (consomatrice) ou dans un autre thread.

Rodéric L
Certified LabVIEW Architect
Message 9 sur 12
4 186 Visites

ah oui...

je pourrais gérer l'event de mon bouton "go" avec ma structure event ..

et ensuite simplement envoyer un Notifier ou une Occurrence vers une boucle extérieure.

bonne idée Rodéric, merci.

0 Compliments
Message 10 sur 12
4 183 Visites