Discussions au sujet de NI LabVIEW

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

Remplacer une variable par une autre

Bonjour,

 

Je développe un programme comprenant de très nombreuses variables. L'affichage de toutes ces variables étant complexe, j'ai copié-collé dans le même fichier ma face-avant afin de la modifier tout en la comparant à l'original sur la même face avant.
 La nouvelle version de la face avant est beaucoup mieux agencée, les variables sont renommées de manière plus logiques...

 

Bref, ma question concerne le diagramme: Est il possible de passer les variables de mon programme lié à la première face avant vers la deuxième?

Un exemple concret: une commande X possède quelques variables locales et quelques noeuds de propriétés que je souhaite lier à NewX. Si je clique avec le bouton droits sur ma commande X, je peux retrouver facilement ces variables locales et noeuds. Y a t'il un moyen tout aussi facile de les lier à NewX ou dois je le faire à la main?

 

Bien Cordialement,

 

Al

0 Compliments
Message 1 sur 12
4 865 Visites

De très nombreuses variables ? ... parles-tu de variables locales ?

 

un programme avec beaucoup de variables locales ? ...  si oui, grrr, j'ai déjà un froid dans le dos.   Smiley heureux

 

Les variables locales sont à éviter au maximum.

 

Pourais-tu poster ton code ... d'avance, merci.

 

 

0 Compliments
Message 2 sur 12
4 862 Visites

@ Ouadji : Je pense qu'il parle des indicateurs et commande en face avant, qui en code C sont des variables...

 

@ Arnaud2000 :

Bon rien de plus simple, tu copie colle ta nouvelle face avant dans ton ancien vi, puis tu place ta souris dans le diagramme sur un noeud de propiété d'une commande ou indicateur que tu aura choisi, tu fais clic droit :

Sans titre.png

et tu choisis ta nouvelle variable de remplacement, tous les noeuds et autre propriété lui seront automatiquement lié. Une fois fais, tu supprimes tes anciens boutons. 

Conseil : vu que c'est une manipe assez lourde quant il y a beaucoup de bouton et d'indicateur à modifier, fais une copie avant toute manipe !

 a+

0 Compliments
Message 3 sur 12
4 856 Visites

@ Ouadji: En fait, ce que j'appelle varianbles, c'est des commandes et des indicateurs... Mais j'ai beaucoup de variables locales pour faire marcher tout ça (oui, je sais que c'est moche, très moche. Mais pourquoi? Plusieurs thread qui partagent des variables locales, je ne vais pas utiliser une queue pour chacune d'elle? si?).

 

labview var loc.png

 

Voila le type de chose que l'on retrouve régulièrement dans mon programme: un thread qui va traiter les informations fournies par l'utilisateur avec des variables internes pour fournir des valeurs sécurisée. En parallèle, un thread de communication avec l'équipement qui utilise la valeur sécurisée. Bien sûr l'ensemble des variables est initialisée avant de lancer ces threads... Mis à part le problème de duplication de la mémoire pour une variable locale (qui reste minime tant que l'on copie des valeurs numériques et booléens), quels sont les inconvénients?

 

@ cb28: Oui, j'avais remarqué cette option, mais comme tu le dit, c'est très très lourd si il y a beaucoup de variable/référence à remplacer, et je me demandais si NI n'avait pas déja rencontré ce "problème" et avait permis par exemple de fusionner deux variables... 😉

0 Compliments
Message 4 sur 12
4 848 Visites

 

Salut Arnaud,

 

 

 

Effectivement si tu as collé de la variable locale un peu partout cela ce complique... Avec un nœud de propriété la fonction "lier a" réassocie tout les nœuds automatiquement à la nouvelle commande.

 

 

 

Je ne vois pas comment remplacer autrement les commandes ou indicateur de ton VI en masse...

 

 

 

Toutefois, il me reste une idée, si ce n'est qu'une question design de face avant enregistre l’aspect de tes nouveaux boutons et indicateurs en .clt puis dans ton ancien vi tu change l’aspect de tes anciennes commandes et indicateurs par les nouvelles.

 

 

 

Bon courage

 

 

 

a+

 

 

Message 5 sur 12
4 838 Visites

Je retappe sur le clou  Smiley clignant de l'œil

 

Si vous voulez faire du "beau code" ... zappez définitivement les varaibles locales.

 

Une variable locale est par définition anti-Labview ... elle brise le flux de données.

 

dans 99% des cas, on peut s'en passer (99,99% ?) ... mais il faut apprendre les possibilités de LV plus en profondeur.

 

En fait, il faut simplement "apprendre Labview réellement" et non faire du mécano.

 

La variable locale, c'est la solution "facile" pour ne pas chercher plus loin ...

 

et c'est la porte d'entrée à toutes sortes de soucis (race conditions, et j'en passe)

 

Si vous utilisez des variables locales dans tous les coins, vous signerez d'office votre code avec le mot "débutant".

 

En ce qui me concerne, un code avec plein de variables locales ... je ne regarde même pas, c'est indécryptable.

 

Je n'ai pas tourné autour du pot, désolé, je suis comme ça   Smiley clignant de l'œil

 

 

0 Compliments
Message 6 sur 12
4 831 Visites

Salut,

 

Je suis d'accord avec cb28, il sera surement plus simple de réadapter la face avant, en gardant les commandes telles qu'elles existent aujourd'hui, en remplacant juste leur esthétique, que de changer partout dans le code, si il y'a vraiment beaucoup de variables et de noeuds de propriété.

Attention, pour que cela fonctionne, ne pas supprimer la commande existante pour la remplacer par une autre du même nom, les liens seraient perdus, mais faire un clic droit sur la commande désirée, puis liquer sur "remplacer", et sélectionner le *.ctl de remplacement qui va bien.

 

@Ouadji:

Je suis d'accord sur le fond, mais resterait un peu plus nuancé sur la forme. Il est vrai que dans la mesure du possible il faut éviter d'utiliser les variables lcoales, mais cela ne veut pas dire qu'il ne faut jamais les utiliser. Parfois, cela évite d' "utiliser le bulldozer pour tuer une mouche" pour reprendre une de tes expressions (que j'espère ne pas avoir trop déformée  ^^ )

 

Olivier L. | Certified LabVIEW Developer


0 Compliments
Message 7 sur 12
4 823 Visites

@Olivier :

 

Smiley très heureux

 

oui, j'ai été un rien "hard".

 

c'était dans l'optique ... d'abord la rigidité, la souplesse ensuite (ancienne école ici Smiley heureux )

 

Il est vrai, que parfois, pour de petites choses, il est bien facile de se contenter d'une locale.

 

cela évite d'utiliser (en effet) un bulldozer pour tuer une mouche.

 

Mais de grâce, pas d'arbre de Noël illuminé de variables locales.

 

(non, non, Olivier, l'expression est astucieusement reprise dans un context approprié, parfait  Smiley clignant de l'œil )

 

0 Compliments
Message 8 sur 12
4 818 Visites

@ Olivier:

Finalement, je l'ai fait en mode bourrain, mais la prochaine fois, j'essaierai de m'y prendre un peu mieux XD

 

@ Olivier et Ouadji:

Me considérant comme un semi-débutant en Labview, j'accepte les conseils et les critiques donc pas de soucis.

D'ailleurs, je suis un peu en mode arbre de Noel^^ J'ai essayé d'utilisé mes variables locales intelligemment (si c'est possible) mais là où cela me semblait critique, je les ai évitées.

Si j'avais le temps d'apprendre à faire un beau code, je le ferai, mais l'urgence est avant tout d'avoir un prototype fonctionnel peu importe la manière. Il restera "sale" tant que je serai en développement et je le "laverai" quand j'aurai une version fonctionnelle à présenter.

 

En tout cas merci pour les conseils et avis et si vous croisez un membre de Ni, proposez lui une petite option permettant de fusionner deux variables de même types 😉

0 Compliments
Message 9 sur 12
4 812 Visites

@Ouadji, les variables locales sont "safe" si bien utilisées => un UNIQUE écrivain et N lecteurs. Après la seule objection c'est qu'elles brisent le flux de données, mais sa n'empèche pas de les utiliser et d'avori un code sur à 100%.

Rodéric L
Certified LabVIEW Architect
0 Compliments
Message 10 sur 12
4 809 Visites