From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

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

Terminer l'executrion d'un VI secondaire dans Un Subpanel en fermant le VI Principale

Bonjour à tous

j'ai un problème de fin d’exécution d'une VI secondaire qui fait l’acquisition de donné d'un daq USB 6000 , de façon quand je clique sur la crois rouge pour quitter le VI principale labview interrompe directement l’exécution du VI secondaire , mon but est de terminer proprement l’exécution du vi secondaire avant de quitter .

vous trouvez ci-joint mon projet qui est basé sur modèle de state machine avec "queue" , pour voir l’exécution des états de la machine à états du VI secondaire je crée un fichier texte , si il y a un moyen de débogage de l’exécution du VI secondaire merci de m'aider aussi la dessus .

je code avec LabvieW 14 .

Merci

 

0 Compliments
Message 1 sur 7
2 436 Visites

On n'a pas le vi secondaire alors c'est difficile de dire comment le terminer proprement. Il y a une variable globale USB 6000 qui contient une valeur Shutdown?, lors de l'événement Panel Close? tu peux donner à cette variable la valeur TRUE (si l'utilisateur confirme) ce qui j'imagine devrait arrêter le vi secondaire. Ensuite dans l'état shutdown tu utilise la méthode Remove VI du SubPanel USB 6000.

Remove VI.png

Ben64

0 Compliments
Message 2 sur 7
2 417 Visites

Merci de votre raiponce  ; la feuille secondaire et celle qui s’exécute dans le subpanel qui s'apelle Usb 6000.vi , le VI principale est le vi State machine.vi , qui sont tous joint dans le projet .

aussi j'ai déja essayer la méthode Remove VI qui ne ferme pas proprement le VI secondaire .

0 Compliments
Message 3 sur 7
2 408 Visites

En effet le vi est dans le zip mais il n'apparait pas dans la fenêtre projet. Comme je l'ai dit dans mon premier message du doit assigner la valeur TRUE à la variable globale "Usb 6000 ShutDown ?" dans l'état ShutDown de "State Machine.vi"

ScreenShot113.png

Ben64

0 Compliments
Message 4 sur 7
2 399 Visites

cela ne résolu pas le problème , toujours le vi state machine interrompe brusquement l’exécution du vi USB6000.vi , et les états Shutdown , et Exit ne sont pas exécuté dans le vi USB6000 , le grand problème est que la carte d’acquisition  n'est plus vue lord du prochain lancement du programme  .car la fonction clear task n'est pas executé .

0 Compliments
Message 5 sur 7
2 384 Visites

Je n'ai pas ce problème en roulant ton vi. Quand j'assigne la valeur TRUE à la variable globale "Usb 6000 ShutDown ?" dans l'état ShutDown de "State Machine.vi" et que je ferme la fenêtre du vi principal (State Machine.vi) le vi Usb 6000.vi se termine par les états "Events" suivi de "Exit". Note que dans Events -> Timeout si Usb 6000 ShutDown est TRUE tu vas directement à l'état Exit (ce qui fait du sens car l'état shutdown ne fait que t'amener à l'état Exit). Comme je n'ai pas de USB-6000 pour rouler le code j'ai désactivé tous les codes DAQ mais je vois quelque chose que le USB-6000 peut ne pas aimer: dans l'état Exit tu écris dans la carte digitale avec autostart = TRUE pour ensuite immédiatement faire un Clear Task. Je te suggérerais d'insérer le vi DAQmx Wait Until Done.vi entre le DAQmx Write et le DAQmx Clear Task avec un timeout de 1 seconde (ce devrait être suffisant).

 

Ben64

 

Ben64

0 Compliments
Message 6 sur 7
2 379 Visites

Bonjour

Merci , pour votre réponse , effectivement , ça marche , mon problème vient du faite que je travaille sur une copie sur un réseau local et dans le vi secondaire la variable globale "Usb 6000 ShutDown ?" dans la structure event timout  n'est pas mis à jour .

encore une fois merci .

0 Compliments
Message 7 sur 7
2 354 Visites