Discussions au sujet des autres produits NI

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

Ouverture et exécution d'un vi par un autre vi

Bonjour à tous,

 

Je souhaiterais ouvrir et exécuter un vi à partir d'un autre vi .

J'ai utilisé différents nœuds de commande pour essayer d'y arriver mais je me retrouve toujours devant un problème.

Si j'ouvre le vi et ne l'exécute pas c'est bon. Mais si en plus je l’exécute, il va le faire qu' une seule fois .Si je le ferme, à l'ouverture suivante, j'ai un message d'erreur.

Quelle est la meilleure solution pour ouvrir et exécuter à partir du vi principal ? Et quels sont les paramètres à rentrer dans le menu "exécution" du vi appelé ?

Merci pour vos infos.

Cordialement

0 Compliments
Message 1 sur 8
4 684 Visites

Bonjour,

Tous dépend de ton besoin lors de l'exéuction de ton vi secondaire.

Tu peux l'intégrer dans une face avant secondaire, tu peux le faire afficher en fenêtre flottante.

 

Après lors de l'appel à ton VI, il faut faire attention aux attributs que tu donnes, qui vont dépendre de ton besoin.

Soit tu lances le VI, et tu poursuis ton programme sans attendre de réponse de sa part, soit tu le lances et tu attends un retour....


Si tu me fournis un VI d'exemple, je pourrais t'indiquer où se situe la source du problème. Sans cela, il va être compliqué de répondre à ton besoin, vu la complexité de la chose :S.

 

 

 

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 2 sur 8
4 675 Visites

Merci Michael pour ta réponse.

Je vais te  faire 2 vi qui représente ce que je veux faire.

En fait, j'ai presque réussi mais pour fermer le vi lancé il faut que je rajoute un bouton fermeture du vi qui ferme la face avant et fait un abandon . Par contre, si je fais ferme le vi par la croix  de la fenêtre dans le coin à droite il plante....Et c'est ce que je voudrais faire !

 

0 Compliments
Message 3 sur 8
4 655 Visites

Alors pour la fermeture du sous vi, il faut que tu regardes dans le VI en lui même.

SI tu as une structure condition, et que tu as des étapes précises à respecter lors de la fermeture de ton VI, tu peux rajouter une condition dans ta structure "face avant fermé", et en mettant "True" à rejeter, tu interdis la fermeture brutale de ton programme, mais tu peux faire une sortie de boucle propre.

 

Regarde mon VI d'exemple, fait le test en mettant "True ou False" au terminal rejeté et tu comprendras la différence de comportement 🙂

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 4 sur 8
4 644 Visites

Merci Michael. Je ne connaissais même pas cette fonction sur la boucle évènement !

En fait, mon pb n'est pas tout à fait ça.

Quelle est la différence au niveau de LabVIEW et de la mémoire entre une fermeture par le bouton ( rond) rouge d'arrêt d'execution et l'arrêt par la croix en haut à droite du cadre ?

J'ai l'impression que mon pb est là

0 Compliments
Message 5 sur 8
4 634 Visites

Bonjour,

A ma connaissance, aucune, les deux sont à proscrire :D.

Cela correspond à un arrêt brutal de ton programme à l'instant T, sans prise en compte d'une quelconque procédure d'arrêt de ton système (fermeture de communication, enregistrement de donnée, mise en sécurité du système,....).


Après, dans le cadre d'un appel à un VI dynamique, ce qui peut se produire, c'est que tu ne détruit pas correctement le handle d'appel de ton VI, et donc l'appel suivant, ton VI maître est en erreur, car il n'arrive plus à trouver la face avant que tu cherches à contacter car celle-ci n'est plus en mémoire.


Il faudrait que tu fournisses un exemple de code représentatif de ton problème pour réellement t'apporter une solution.

Cdt,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 6 sur 8
4 631 Visites

Bon j'ai pu régler ce problème.

Tu as raison Michael, je ne voyais pas que le vi restait en mémoire. Effectivement il faut l'effacer de la mémoire avant de l'abandonner et de demander ensuite une réouverture.

Le truc qui est assez déroutant c'est que ton vi peut être toujours en mémoire sans que tu le saches... si tu l'as mal fermé ! 🙂

Comment peux t'on vérifier que ce vi est bien effacé ?

0 Compliments
Message 7 sur 8
4 607 Visites

Bonjour,

 

Pour ma part, dans le cadre d'un appel dynamique, je vérifie avant d'exécuter le sous VI, je regarde l'état du VI avant de le lancer, en vérifier s'il est en cours d'exécution, au travers du noeud de propriété

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvprop/vi_exestate/

 

En espérant que cela réponde à ton besoin.

Cdt,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 8 sur 8
4 605 Visites