Discussions au sujet de NI LabVIEW

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

Comment utiliser un subpannel pour afficher les face avant de deux sous-vi _erreur 1000

Résolu !
Accéder à la solution

Bonjour à tous,

 

Je souhaite utiliser un subpannel pour afficher les faces avant de deux sous-vi pour pouvoir les executer, enregistrer certaine valeur puis retourner sur ma vi principale.

 

J'utilise actuellement une strucutre event dans une boucle while avec deux controleur boleen vi1 et vi2

L'idée est de pouvoir afficher dans le subpannel la sous vi1 lorsque j'appuie sur le bouton vi1 et la sous vi2 pour le bouton vi2.

 

Dans ma structure condition pour mes deux cas j'utilise la fonction open vi reference que je relis au noeud de propriété 'run vi' et au neud de propriété du sub panel 'Insert Vi'.

 

lors de l'exécution tout se passe très bien lorsque j'appuie sur les booléen la vi1 ou 2 s'ouvre dans le subpannel et fonctionne correctement.

Cependant si j'appuie par exemple sur bouton1, puis bouton2 puis a nouveau bouton1 j'obtient un code d'erreur 1000, cela vient du fait à mon avis que je fait à nouveau appel à la fonction Run Vi alors que la vi est déja en train de run.

Est-il possible d'obtenir un fonctionnement correspondant à ce que je cherche ? sachant que je voudrait potentiellement pouvoir switcher sur le subpannel d'une sous-vi à l'autre sans les fermer pour ne pas perdre toute les data.

 

Si vous avez une idée de la méthode à mettre en place, je suis preneur.

 

Cordialement

0 Compliments
Message 1 sur 20
4 546 Visites

Tu voudrais lancer 2 sous-VI (sv1 et sv2) ... et alternativement, dans un "Main", pouvoir visualiser le FP de l'un ou de l'autre dans un subpanel.

 

Tu ne veux pas stopper tes 2 sous-VI pour ne pas "perdre les données" ... ok.

 

Il s'agit donc de 2 codes qui tournent de façon autonome .... tu vas devoir les lancer avec des "appels asynchrones" (avec "wait until done = false)

 

Ensuite, quand ils seront lancés, tu pourras visualiser le FP de l'un ou de l'autre dans un subpanel dans le Main (tu peut prévoir un event dans ta structure Event pour les lancer)

 

Tu utiliseras uniquement "insert VI" (plus besoin de "run VI" ... tu changeras simplement de Reference du VI à l'entrée de ton "insert VI".

 

Il est tard, trop tard pour que je puisse tout coder pour te montrer ... mais si tu n'y arrives pas, je le ferai (demain)

 

Juste une question :

 

Quand tes 2 VIs seront en train de tourner ... comment feras-tu pour les stopper au départ du Main ?

 

Car si tu stoppes ton Main ... il faudra bien stopper les 2 VIs aussi (qui eux aussi sont en train de tourner en arrière plan de ton Main)

 

Tu as une idée ? Quand tu fais "stop" sur le Main, comment envoyer l'info "stop" aux 2 autres VIs ?

0 Compliments
Message 2 sur 20
4 537 Visites

Bonjour merci pour ces premieres informations.

 

concernant la fermeture des vi pour l'instant je ne les fermes pas depuis mon main, mais depuis les sous-vi elles- meme. J'ai des boucles whiles avec un boolen qui commande l'arrets.

 

je vai esséayer ta piste avec l'appel asynchrone.

 

Une autre question plutot d'aspect graphique cette fois ci. Dans mon main imaginons que mon front pannel fasse 10cm de large est il possible suite à un evenement par exemple d'augmenter  la taille de ma fenetre pour inclure le subpanel en l'occurence, puis qu'a la fin de l'execution des sous-vi le front pannel retrouve sa taille normal.

Parceque cela fait partie d'une IHM et le subpanel n'intervient que dans 10% du temps total alors que je dois configurer la taille en plus et il y a de l'espace inutilisé et un peu moche graphiquement tout le reste du temps

0 Compliments
Message 3 sur 20
4 524 Visites

Effectivement avec l'appel asynchrone la fermeture des Vi pose quelques problèmes apparement, cela fait completement planter mon labviiew

0 Compliments
Message 4 sur 20
4 518 Visites
Solution
Accepté par MicroPom

regarde ceci (vi joints LV2014)

 

pour lancer : run Main.vi

 

joue un peu avec ce VI et dis moi si ça va dans le sens de ce que tu recherches.

 

Tu peux "lancer" les 2 sousVIs de façon asynchrone

Tu peux visualiser le FP de l'un ou de l'autre dans un subpanel du Main

Tu peux tout "fermer" proprement.

 

en fait pour fermer ça se passe comme ceci :

1) je donne l'info stop au Main

2) le Main envoie l'info stop aux deux sousVIs

3) chaque sousVI stoppe et retourne au Main une info "ok stoppé"

4) quand le Main à reçu l'ACK des 2 sousVIs ... il ferme les Refs et stoppe lui-même

 

pour "le reste" ... un chose à la fois.

Regarde d'abord si ce que je te présente répond (ou non) à tes besoins.

0 Compliments
Message 5 sur 20
4 514 Visites

Bonjour,

merci pour taon aide elle m'est très utile et j'ai réssi à gérer mon problème.

Il y me reste cependant   une question, est-il possible de modifier la tailler du front panel durant l'execution ?
C'est à dire dans mon cas lorsque je veux rentrer les paramètres ou les lires, ou les interpréter, je dois afficher le subpanel pour cela.

Cependant la face avant de mon souspanel est assez conséquente et losque mon paramétrage est fini j'aimerai revenir à une taille de frontpanel plus réduite.

Est-ce possible ?

si oui quelle piste dois-je suivre ?

 

Cordialement ,

 

0 Compliments
Message 6 sur 20
4 485 Visites
Solution
Accepté par MicroPom
0 Compliments
Message 7 sur 20
4 477 Visites

oh nickel !

 

Un grand merci à toute l'équipe qui est très efficace active et pertinente  !

 

Message 8 sur 20
4 470 Visites

Je viens juste de le voir ... dans mon snippet,

le noeud de propriété du dessus (pour le subpanel) est en lecture ... tu le places en écriture bien entendu.

 

et tu peux aussi créer directement le noeud de propriété : clic droit sur le subpanel / Create / Property Node /

 

et tu obtiens ceci :

 

yyyyyy.png

0 Compliments
Message 9 sur 20
4 452 Visites

oui bien entendu, je connaissais dejà ces manipulations.

Merci quand même 🙂

0 Compliments
Message 10 sur 20
4 430 Visites