Comment assurer que les structures Événement gèrent les événements chaque fois qu'ils se produisent

Aide LabVIEW 2014

Date d'édition : June 2014

Numéro de référence : 371361L-0114

»Afficher les infos sur le produit
Télécharger l'aide (Windows uniquement)

LabVIEW commence à placer des événements en file d'attente dès que le VI s'exécute ou qu'il est réservé pour l'exécution. La structure Événement gère un événement placé en file d'attente lorsque le flux de données permet à la structure de s'exécuter. Par conséquent, LabVIEW peut générer des événements avant qu'une structure Événement attende de les traiter.

Comme LabVIEW place les événements en file d'attente pour toute la durée d'exécution d'un VI, LabVIEW peut mettre des événements en file d'attente après qu'un flux de données entraîne la fin de l'exécution d'une structure Événement. Par exemple, la boucle contenant la structure Événement peut terminer alors que le VI continue son exécution. Pour vous assurer que tous les événements de la file d'attente seront traités, configurez le VI pour qu'il termine son exécution peu après l'arrêt de l'exécution de la structure Événement.

Attention  Si aucune structure Événement ne gère un événement et que le verrouillage de la face-avant est activé, l'interface utilisateur du VI ne répond plus. Dans ce cas-là, cliquez sur le bouton Abandonner l'exécution pour arrêter le VI. Vous pouvez désactiver le verrouillage de la face-avant en effectuant un clic droit sur le cadre de la structure Événement et en décochant l'option Verrouiller la face-avant jusqu'à la fin de l'exécution de la condition d'événement dans la boîte de dialogue Éditer les événements. Vous ne pouvez pas désactiver le verrouillage de la face-avant pour les événements de type filtre.

Utiliser une boucle While pour que la structure Événement gère tous les événements

Placez la structure Événement dans une boucle While qui arrête de s'exécuter quand les événements ne peuvent plus avoir lieu. Par exemple, dans le diagramme suivant, la structure Événement est située à l'extérieur de la boucle While et le verrouillage de la face-avant est activé pour la condition Valeur changée du numérique.



Si vous changez la valeur de la commande numérique, un événement se produit. La structure Événement s'exécute une fois et gère l'événement de changement de valeur. Si vous changez à nouveau la valeur de la commande numérique, un autre événement se produit et l'interface utilisateur se bloque car le verrouillage de la face-avant est activé. La structure Événement s'est déjà exécutée une fois et comme elle n'est pas située dans une boucle While, elle ne peut pas s'exécuter à nouveau pour gérer le second événement. Si vous cliquez sur la commande booléenne stop pour arrêter la boucle While et le VI, celui-ci ne peut pas s'arrêter car le diagramme n'a pas encore géré le second événement et LabVIEW ne traite pas l'événement lorsque vous cliquez sur la commande booléenne stop tant que le diagramme ne gère pas l'événement. Vous pouvez éviter ce comportement en plaçant la structure Événement à l'intérieur de la boucle While.

Éviter d'utiliser une structure Condition pour déterminer quand une structure Événement gère les événements

Évitez de placer une structure Événement à l'intérieur d'une structure Condition. Par exemple, dans le diagramme de la figure suivante, la structure Événement est située à l'intérieur d'une structure Condition et le verrouillage de la face-avant est activé pour la condition Valeur changée.



Si vous cliquez sur la commande Obtenir la valeur, la face-avant se verrouille indéfiniment. La constante booléenne Faux câblée à la structure Condition empêche la structure Événement de gérer l'événement dans la condition Vrai. Comme le verrouillage de la face-avant est activé pour l'événement, la face-avant attend que la structure Événement s'exécute, mais le flux de données empêche cette dernière de gérer l'événement. Si vous désactivez le verrouillage de la face-avant pour cette application et que vous cliquez sur la commande Obtenir la valeur, la face-avant réagit de nouveau et le VI termine son exécution lorsque vous cliquez sur le bouton Stop. Cependant, la valeur numérique ne s'incrémente pas car la structure Événement ne peut toujours pas s'exécuter pour gérer l'événement.

CET ARTICLE VOUS A-T-IL ÉTÉ UTILE ?

Pas utile