Discussions au sujet des autres produits NI

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

masquer un vi

Résolu !
Accéder à la solution

Je joins un exemple (VI principal et VI1) mais j'ai quelques problèmes à les sauvegarder en LV8.0 (avertissement). Vous devez faire deux copies du VI1 en les renommant VI2 et VI3. Si vous n'arrivez pas à les faire fonctionner, voici l'idée.

 

1) C'est le VI principal (votre VI menu) qui ouvre par réréfence tous les VI secondaires et transmet à chacun d'eux sa propre référence. Ainsi chaque VI secondaire peut rappeler le VI principal à l'aide de la référence "Refnum de VI principal" (VI principal Image 1).

 

2)Chaque VI secondaire possède la variable "VI refnum []" (array de ref number) et le VI principal écrit par référence, dans chacun de ces VI secondaires, la liste des références de tous les VI secondaires (VI principal Image 2). Maintenant, il est possible pour n'importe quel VI ou VI secondaire d'appeler le VI principal ou les autres VI secondaires que vous désirez (tout le monde connait tout le monde).

 

3) Lorsque vous êtes dans un VI secondaire, VI3 par exemple, et que vous désirez passer au VI suivant vous devez être en mesure de connaître sa position dans la variable "VI refnum []". Vous utilisez pour cela la fonction Search 1D Array et l'élément que vous cherchez est la référence du VI3 "This VI" (VI1, 2 ou 3 Image 1 et VI1, 2 ou 3 Image 2). Vous connaissez la position du VI3 dans "VI refnum []" et par conséquent la position de la référence du VI secondaire précédent ou suivant. Si vous désirez revenir au VI principal(votre VI menu), vous avez aussi sa référence.

 

Jean-Marc

Tout télécharger
0 Compliments
Message 11 sur 17
1 850 Visites
Le reste.
Tout télécharger
0 Compliments
Message 12 sur 17
1 849 Visites
LV8.5
Tout télécharger
0 Compliments
Message 13 sur 17
1 848 Visites
Solution
Accepté par l'auteur du sujet ln

Comme je l'avais mentionné dans mon premier post, cette technique  utilise plus de mémoire vive (car tous les VI sont ouverts en même temps).  On ne ferme jamais un VI (on le rend invisible- hidden), sinon la référence d'un VI que l'on a fermé devient non valide.  Les VI secondaires sont fermés par le VI principal lorsque l'on quitte le VI principal. 

 

Jean-Marc

 


0 Compliments
Message 14 sur 17
1 842 Visites

Désolé,

 

Il était un peu tard lorsque j'ai écrit ma dernière réponse.  La partie raturée est fausse:

 

 

"On ne ferme jamais un VI (on le rend invisible- hidden), sinon la référence d'un VI que l'on a fermé devient non valide."

 

 

Comme nous avons sélectionné  "auto dispose refence = false" (pour les VI secondaire) alors, les références seront valides tant qu'elles ne seront pas fermées par le VI principal ou, il faut que je vérifie, mais je n'ai pas le temps actuellement, que le VI principal n'est pas fermé.

 

 

Vous pouvez aussi ouvrir les VI au fur et à mesure:  dans le VI principal vous ouvrez seulement les références.

 

 Ouvrir seulement les références.jpg

Lorsque vous ouvrez un VI secondaire, à partir du VI principal, vous transmettez la référence du VI principal et "VI refnum[]". Naturellement à chaque fois vous devez vérifier si le VI est déjà ouvert. Si un VI n'était pas déjà ouvert alors il faut aussi lui transmettre les références.

 

Vérification.jpg

J'ai déjà utilisé quelque chose de semblable, mais j'avais seulement six VI et c'était plus simple de tous les ouvrir.  

 

Jean-Marc

 

 

0 Compliments
Message 15 sur 17
1 783 Visites

Bonjour Jean-Marc,

 

Merci beaucoup pour toutes vos réponses. J'ai ainsi réussi à faire ce que je voulais, mais il me reste un petit détail à régler, c'est que lorsque je crée un exe, les sous VI appelés ainsi n'apparaissent pas. J'ai du oublier une option mais je ne vois pas laquelle. Avez-vous une idée ?

 

Merci d'avance.

Ln

0 Compliments
Message 16 sur 17
1 755 Visites

Je ne me rappelle plus ce qu'il faut faire dans LV8.0 mais dans 8.6 il faut que tout les VI que l'on appelle par référence soient "Always included - désolé, interface anglaise".

 

 

Drawing1.jpg

 

Votre VI Menu sera donc le "Startup VIs" et les autres VI seront "Always included".

 

Jean-Marc

0 Compliments
Message 17 sur 17
1 750 Visites