Discussions au sujet des autres produits NI

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

Comment stopper un sous vi

Bonjour,

je fait appel à vos compétances pour savoir comment stopper un sous-vi de la manière la plus élégante possible.

En sachant que ce sous-vi est éxcuter en parrallèle, c'est qu'il n'est pas appellé dans le diagramme mais par open vi reference

Et que ces deux vi utilisent un event, avec la machine d'état jki software ???

 

Si quelqu'un à une idée ???

 

Je pensais à générer un évènement ???

 

 

Cordialement

Julien GELAY
Tecsup
Technicien BE - Software
0 Compliments
Message 1 sur 10
4 716 Visites

Fiston wrote: 

Je pensais à générer un évènement ???


Salut,

 

Une bonne idée !

Si ça s'intègre mal, pense aux évènements dynamiques.

 

A+

0 Compliments
Message 2 sur 10
4 698 Visites

Vous avez tous les outils à dispo d'après votre description.

 

Dans le cas ou le sous-VI est une interface utilisateur:

Comme vous ouvrez le sous-VI avec Open VI Reference, vous avez donc la possibilité d'utiliser la méthode FP.Close depuis l'appelant à partir de la référence.

 

Et dans le sous-VI, vous pouvez gérer l'évenement associé "Panel.Close?" avec un Discard=True et dans ce même event, vous renvoyer le sous-VI vers un cas Quitter propre de votre machine à états.

 

Si ce n'est pas une interface utilisateur, effectivement vous pouvez générer un User Event

Message Edité par J.DECHET le 04-14-2010 09:24 AM
0 Compliments
Message 3 sur 10
4 687 Visites

Erratum:

 

Contrairement à ce que je croyais (et d'ailleurs, c'est la cata pour plusieurs de mes devs), la méthode 'FP.Close' sur la référence d'un sous-VI dynamique n'est pas interceptée dans le sousVI par l'event Panel.Close?.

 

Dans la doc LV, il est spécifié :

Note  LabVIEW cannot generate a Panel Close event for a VI being viewed or controlled remotely. If you are viewing or controlling a VI remotely, LabVIEW can generate events only for controls, not for a VI or the entire application. Smiley fou

 

Vous voudrez donc bien m'excuser pour le mauvais conseil que j'ai proposé précedemment.

 

Si des experts passent par là et ont une combine pour sortir d'un sous-VI dynamique proprement (equivalent à Panel.Close? + Discard=True puis renvoi vers un cas quitter), avec sans rien ajouter à la structure event (c'est à dire ne pas ajouter d'event personnalisé), je suis preneur. 😉

0 Compliments
Message 4 sur 10
4 666 Visites
Si le sous-vi utilise une machine à états de type file d'attente, il me semble qu'il est possible de rajouter un état directement dans la file d'attente à partir du VI principal, en utilisant son nom, défini lors de la création de la file d'attente.
Cordialement,


Micaël DA SILVA
0 Compliments
Message 5 sur 10
4 662 Visites

Bonjour,

 

Il y'a un exemple très bien fait qui utilise les VI Server ici :

 

http://digital.ni.com/public.nsf/allkb/E38991F4A3892B6F86256E44004C5963?OpenDocument

 

Cordialement,

0 Compliments
Message 6 sur 10
4 660 Visites

Oui effectivement très bonne exemple, mais ça je connais déjà !!!

Nous on parle de deux vi avec structure event.

Car cette méthode ne signale pas d'èvènement sur le bouton stop.

 

Cordialement

Julien GELAY
Tecsup
Technicien BE - Software
0 Compliments
Message 7 sur 10
4 655 Visites

Dans mon cas concret, j'ai une appli assez importante qui présente une vingtaine d'interfaces prédéfinies brassant un ensemble de  données mais représentées différemment suivant le contexte dans les interfaces. Parmi ces interfaces, il y en a une plus générique qui est un lanceur de plugins ou l'Utilisateur peut créer ses propres interfaces en ayant accès facilement aux données générales (techno wireless inside ;)).

 

Le seule contrainte que j'impose à l'Utilisateur lors de la création de ses interfaces, c'est que le code tourne en continu => i.e une boucle while mais je n'impose pas de condition particulière d'arrêt de la boucle (comme un bouton 'stop' par exemple) car j'arrête ces 'Plugins' par la méthode FP.Close. Par contre, comme je ne sais pas à l'avance le contenu de ces interfaces perso, je conseille vivement àl'Utilisateur de gérer une sortie propre du code en plaçant une structure Event avec un cas Panel.Close? et un Discard=True dans la boucle. Ca c'était valable si FP.Close était vu par Panel.Close? mais là, le choc, c'est pas vrai... Smiley surpris

 

J'utilise LV8.5.1.

0 Compliments
Message 8 sur 10
4 645 Visites
up
Julien GELAY
Tecsup
Technicien BE - Software
0 Compliments
Message 9 sur 10
4 602 Visites

Bonjour,

tu as un exemple sur la manière de générer des évènements utilisateur avec la JKI state machine sur les forums JKI:

http://forums.jkisoft.com/index.php?showtopic=1347

 

Cordialement,


Micaël DA SILVA
0 Compliments
Message 10 sur 10
4 588 Visites