Discussions au sujet de NI LabVIEW

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

conseil programmation

Résolu !
Accéder à la solution

Bonjour,

 

  J'aurai besoin de vos conseils. Je dois développer une interface permettant de manipuler des fichiers textes. Dans un premier temps l’utilisateur sélectionne un répertoire de travail ainsi que son nom d'utilisateur depuis une liste. Ensuite cet utilisateur accède à un menu ( autre VI) puis selon le menu sélectionné arrive dans un sous menu. De la on effectue les tâches nécessaires. 

 

  Au début j'avais réaliser des vi qui appelaient d'autres vi avec des séquences. Ayant été bloqué avec ces séquences, je modifie l'ensemble de mes vi afin de travailler en machine d'état.

 

  J'aurai besoin de quelques informations peut on mettre une machine d'état dans une autre, est-il possible d’interagir d'un vi à l'autre avec des transitions liés à 2 ou plusieurs vi. Est-il possible de parcourir un VI avec une machine d'état d'ans lancer un autre tout en fermant l'actuel ? 

 

Merci d'avance 

 

      

0 Compliments
Message 1 sur 9
2 759 Visites
Solution
Accepté par l'auteur du sujet PicPic

Salut Pic²,

 

Alors, pas sur de comprendre tes questions amigo...

- "Mettre une machine d'état dans une autre" ? Pourquoi ? Dans quel contexte ? Tu veux dire "Une machine d'état qui lancerait un VI qui contiendrait une autre machine d'état" ? C'est jouable à condition de bien les coder !

- "Parcourir un VI avec une machine d'état d'ans lancer un autre tout en fermant l'actuel" ? Je n'ai malheureusement pas compris...

 

Pour faire ce que tu souhaites faire, j'ai l'impression que TestStand couplé à du code LabVIEW serait parfait pour toi. Mais bon, en admettant que tu ne possèdes pas TestStand, ça reste faisable en LabVIEW sans se faire autant de noeuds au cerveau...

 

Je t'ai fait un exemple rapide en PJ, pour LabVIEW 14 et plus récent:

  • Déjà, important : créer un projet .lvproj permet de bien gérer son code
  • Il y a 3 VI principaux :
    1. Le VI Login dans lequel on pourrait initialiser ce dont tu parles, le nom d'utilisateur et le choix d'un chemin par exemple. Ce VI est configuré de telle sorte que la face-avant soit visible dès le lancement du VI (File -> VI Properties -> Windows Appearance -> Custom -> "Show Frontpanel when called" et "Close afterwards if originally close". 
    2. Le VI Menu, qui contient une machine d'état avec événement, pour "effectuer les tâches nécessaires". Ce VI aura aussi un bouton Stop (pour arrêter l'appli) et Previous (pour revenir au VI Login). Ce VI est configuré de telle sorte que la face-avant soit visible dès le lancement du VI (File -> VI Properties -> Windows Appearance -> Custom -> "Show Frontpanel when called" et "Close afterwards if originally close". 
    3. Le VI Main, qui contient une machine d'état pour gérer l'ordre de lancement des VIs Init et Menu. Ce VI est configuré de telle sorte que lorsqu'il est lancé, la Face Avant soir transparente (Ce VI est configuré de telle sorte que la face-avant soit visible dès le lancement du VI (File -> VI Properties -> Windows Appearance -> Custom -> "Window run transparently" : 100%).

Tu verras avec ce projet qu'il est relativement aisé de faire ce que tu souhaites.

Bilsix
Message 2 sur 9
2 629 Visites

Merci beaucoup pour la réponse je regarde ça cet après midi. Si j'ai des questions je me permettrais de revenir vers toi.

 

Slts 

0 Compliments
Message 3 sur 9
2 605 Visites

(Si ça a permis de te débloquer, n'hésite pas à marquer la réponse "Comme Solution" et à donner un petit Kudo qui fait toujours plaisir à l'égo !)

Bilsix
Message 4 sur 9
2 596 Visites

Ok je fais ça de suite. Je ne comprends pas pourquoi le Previous Button n'est pas dans le cas "previous button" : value change.

 

Sinon dans l’ensemble j'ai compris le reste. Je vais essayer de faire un sous menu du menu car pour mon projet j'en aurai besoin. 

 

Encore merci de ton aide

 

PicPic_0-1579702832115.png

0 Compliments
Message 5 sur 9
2 539 Visites

Top si c'est ce que tu veux !

 

Le fait que le contrôle "Previous Button" ne soit pas dans l'évenement "Previous Button : Value Change"... n'est qu'un oubli de ma part ! Mais il est anecdotique : en réalité, l’événement n'a pas besoin que le contrôle soit présent pour fonctionner, il faut juste que le contrôle soit créé sur le diagramme, peu importe ou il se trouve.

Après, on met effectivement les contrôles dans les événements correspondant en général, mais c'est une simple convention (pour qu'ils soient plus facile à trouver si on a envie de faire quelque chose avec).

Bilsix
0 Compliments
Message 6 sur 9
2 536 Visites

ok merci, bon à moi de jouer maintenant ^^

Message 7 sur 9
2 532 Visites

@Pic²

Suite à nos MP :

Bilsix
Message 8 sur 9
2 518 Visites

Encore merci j'ai appris pas mal de chose ( définition de type .ctl) grace à toi 😉 Idem vu que tu avais mis un cluster j'ai pu voir également à quoi ça servait et l’intérêt ça va bien me servir surtout que tu peux y mettre plusieurs types chaine, entier, etc . Moi je passé par des variables globales d'ailleurs j'ai du mal à voir la différence entre variables globales et cluster car au final car on peut mettre un enum en variables globales et impacter tout les vi concernés non? 

 

Et pour finir la machine d'état j'ai bien compris avec chaque état de machine stocké dans un "control" pour permettre une maintenabilité en cas d'évolution. J'ai fais l'essais aujourd'hui de réaliser un appel d'un autre vi machine d'état permettant de créer un sous menu si on appuit sur un menu. Il faut faire de la gymnastique de cerveau mais du coup j'ai eu la réponse à ma question initiale qui était est ce qu'une machine d'état peut en appeler une autre. La quand je clique sur précédent du vi de sous menu je reviens bien dans le vi de menu. Par contre quitter l'application de le vi de sous menu pour quitter l'application complète pas encore réussi j'essaye de nouveau demain. Je vais voir si je peux le quitter en agissant directement sur le vi main ou si je dois d'abord quitter le vi de menu pour après quitter le vi du main.   

 

 

Mais en tout cas encore merci pour ton aide 😉

0 Compliments
Message 9 sur 9
2 289 Visites