Discussions au sujet de NI LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

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 Kudos
Message 1 of 7
(1,219 Views)

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

--------------------------------------------------
The best way to say thanks is to give kudos!
0 Kudos
Message 2 of 7
(1,200 Views)

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 Kudos
Message 3 of 7
(1,191 Views)

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

--------------------------------------------------
The best way to say thanks is to give kudos!
0 Kudos
Message 4 of 7
(1,182 Views)

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 Kudos
Message 5 of 7
(1,167 Views)

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

--------------------------------------------------
The best way to say thanks is to give kudos!
0 Kudos
Message 6 of 7
(1,162 Views)

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 Kudos
Message 7 of 7
(1,137 Views)