Discussions au sujet de NI LabVIEW

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

Type Def Enum Constante

Résolu !
Accéder à la solution

Bonjour à tous !

Dans le cadre d'un projet, mon programme contient un nombre important de constantes (utilisée pour afficher des warnings de valeur seuil sur des données d'acquisition) répartit dans plusieurs sous-VI de droite et de gauche.
Ces constantes sont sujet à modification (rare mais possible), et donc, pour faciliter la "maintenance" je me suis dit que ce serait bien de toutes les regroupés.

L'idéal aurait été de faire un peu comme pour une machine à état, à savoir une "Type Def constante Enum", mais au lieu que Data0 soit à 0, Data1 à 1 ... Data0 soit à 458 et Data1 à 173,224 ! Mais je ne sais pas si c'est possible ! Une idée ?
Comme ça, l'utilisateur, en modifiant uniquement la commande, pourrait moifier les valeurs partout ! et d'un point de vue propreté du code, ce serait mieux je pense !

 

Si cela ne marche pas, j'ai peut-etre d'autres idées :
- Un cluster de constantes, mais je n'arrive pas à donner un nom à la constante, pour que, lors du désassemblage, je sache qui correspond à quoi ! (et non pas afficher juste l'étiquettes).

- Un tableau, mais bon ... l'indice ...

- lecture d'un fichier texte, mais j'ai peur que ce soit complexe. Surtout si je veux que ce soit facile à entrer pour l'utilisateur ! Après, d'un point de vue maintenance, c'est peut etre le plus facile, mais je ne sais pas si je peux lire par exemple, que la deuxième colonne ...

 

Cela est plus d'un point de vue maintenance, à savoir que ces constantes changeront peut etre 2-3 fois par an, donc je ne veux pas faire un VI pour l'utilisateur !

 

Si vous avez des idées ou une solution à me proposer, je suis preneur ! Je n'ai pas encore trouvé mon bonheur !

Merci beaucoup

 

Erwan 

0 Compliments
Message 1 sur 17
5 042 Visites

J'ai cherché toute la journée en vain, puis la, d'un coup, 5min après avoir posté je trouve la solution !

--> Rings !

Désolé pour le post ! Il peut etre supprimé !

0 Compliments
Message 2 sur 17
5 040 Visites

Bonjour,

Il serait intéressant que tu fournisses ta réponse. Il existe plusieurs méthodes pour réaliser cela.
Pour ma part, je privilégie généralement le fichier de configuration au format INI qui permet grace au section et au clé d'avoir un fichier compréhensible et modifiable hors labview.

 


Je profite de ce poste aussi pour signaler qu'il faut faire attention lors de l'utilisation d'une définition de type.
Cette définition ne porte que sur la "structure de la commande", i.e. c'est un tableau, une chaine, un cluster.... , en aucun cas cela propage sa valeur par défaut.

 

NI préconise d'ailleurs lors d'utilisation de cluster en définition de type de mettre les valeurs par défaut grace à la fonction assembler par nom, et pas en utilisant une constante, car en cas de mise à jour de la définition de type, il faut retoucher toutes les valeurs par défaut, même s'il s'agissait juste de rajouter un élément dans le cluster, ce qui n'impacte pas le noeud assemblé par nom.

 

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
Message 3 sur 17
5 037 Visites

Salut Michael.C

 

Alors, ce que j'ai trouvé, c'est que si l'on veut créer une constante Enum, mais ne pas avoir de valeurs séquentielles (0,1,2,3 ...), on peut utiliser un(e) "rings" ! Cela permet en décochant la case de valeur séquentielle de définir sois-meme ses valeurs !

En revanche, le fichier de configuration INI est encore plus sur ! C'est plus dans ce que je cherchais à la base ! Et c'est plus comme ceci que je pense faire en fin de compte, surtout vis à vis de tes avertissements sur les Type Def !

Je vous tiens au courant de la suite !

0 Compliments
Message 4 sur 17
5 035 Visites

J'ai pu faire une première approches des fichier INI ! En effet, c'est un peu comme si je lisais un fichier texte bien ecrit !
Donc cela semble etre une bonne solution dans mon cas, en revanche, quand je récupère la valeur d'une clef, si je veux la mettre dans un cluster, je ne peux pas l'assembler par nom .... (je suis novice avec les clusters), je trouve qu'il faut un peu magouiller le sytème pour y arriver, c'est moins "pratique", surtout si par la suite on veut ajouter une constante !
L'objectif serait de desassembler le cluster et de cabler la bonne constante devant chaque VI necessitant une constante ! Mais j'aimerais que le nom s'affiche quand je creer le" cable de connexion Cluster-VI"

 

Ou alors, mais je ne sais pas si c'est le mieux, cela me semble plus lourd : à chaque fois que j'ai besoin d'un constante je lis mon fichier de configuration ! Vous pensez que c'est le mieux ?

(je pense que niveau clareté on a connu mieux Smiley très heureux )

 

Merci !

0 Compliments
Message 5 sur 17
5 029 Visites

Tu pourrais fournir un bout de code en exemple, car je n'arrive pas à comprendre clairement ton explication 😄

“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 17
5 021 Visites

tu peux éventuellement lire une constante dans un sous vi

....

pas clair

tu créer un sous vi ds lequel tu mets une cte de ta def de type

chaque fois que tu appelles le sous vi tu accèdes à ta constante

0 Compliments
Message 7 sur 17
5 015 Visites

Bonsoir à tous !

Ouais c'était pas très clair, je le confirme mais dans cette explication pas clair, j'ai creusé le truc, et j'ai trouvé la solution en faisant comme ci-dessous :

- je creer un cluster ou je met tout mes indicateur avec des noms

- je creer une constantes "cluster"

-je creer un "assembleur par nom"

-je déconnecte la constante du cluster et je la lie a l'assembleur par nom

-je relie mes constantes avec l'assembleur !

Rien de fou, mais c'était pas du tout évident pour moi !

 


constantes.JPG

Au final, je n'ai plus qu'a invoquer mon sous-vi et désassembler par nom quand j'ai besoin d'une constante !

Et je n'ai qu'a changer les constantes dans le fichier INI très simplement !

(après, l'ajout d'une constante necessite un tout petit peu de boulot)

0 Compliments
Message 8 sur 17
4 987 Visites

Tout à fait.


Et si tu ne veux pas multiplier les accès ton fichier, tu peux transformer ton VI en vgf avec deux cases "init" et "get".

 

Si tu fournis ton code, je te montre comment faire en 2 minutes.


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 9 sur 17
4 956 Visites

Ah oui en effet je veux bien voir comment on peut faire !

Merci

0 Compliments
Message 10 sur 17
4 950 Visites