Discussions au sujet de NI LabVIEW

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

Contrôle personnalisé (booleen commande et indicateur)

Bonjour,

 

Voici mon problème. Je cherche à réaliser une commande booleen ON OFF un peu spéciale. En fait voila imaginons le scénario suivant :

 

1) On commence avec un état OFF (image: off ) puis l'utilisateur clique sur le bouton pour passer à ON

2) La on affiche pas directement l'état ON (image: on) mais plutôt l'état "en attente de passer a ON" c'est à dire l'image de ON vers OFF.

3) Puis on attend un événement qui signifie " je suis vraiment/physiquement passer à ON " et quand cet événement arrive (l'info provient d'une trame réseau) on affiche l'image on mais pas avant !

4) Inversement quand on est dans l'état ON et qu'on clique pour mettre OFF on affiche d'abord un état "en attente de passer a OFF"  et quand on reçoit l'information "machine vraiment a OFF" alors on affiche le OFF.

 

Voila donc en gros ça serait un indicateur-commande. J'ai déjà essayé avec les noeuds de propriétés mais rien de bien concluant. 

Si vous avez une idée ou une astuce merci d'avance.

 

Clément

 

PS : En pièce jointe les images sont dans le zip. Je met aussi mon essais sous labview 2012 avec deux bouleens personnalisés que je pensais superposer meme si le résultat est tres mauvais.

0 Compliments
Message 1 sur 30
6 373 Visites

Bonjour clementTlse,

 

Si j'ai bien compris dans ton cas tu veux adapter l'apparence de ton contrôle à l'état d'un système. Pour cela il te suffit d'utiliser les noeuds de propriétés. Il vont te permettre de modifier pendant l'exécution de ton programme l'apparence de ton controle (couleur, texte, son accessibilité, sa valeur,...).

 

Je te mets un exemple dans lequel le texte du contrôle booléen est égual à la chaine que tu mets dans le contrôle chaine. Cela devrait t'aider à comprendre le principe.

----------------------------
-- Bastauss -- CLA/CTD --
----------------------------
0 Compliments
Message 2 sur 30
6 367 Visites

Merci Bastauss pour la rapidité de ta réponse.

 

Oui je connais les noeuds de propriétés mais je ne vois pas comment les utiliser dans mon cas. En effet il faudrait un noeuds qui change seulement "la moitié" du bouton.

Ou alors un bouton avec 4 images/représentation qui changent selon l'état du système. Cependant un booleen n'a que deux apparences : une pour son état vrai est une pour son état faux. Donc même en changeant la couleur par un noeuds de propriété cela changerai toute l'image et ça ne colorerai pas les ON et OFF comme je le souhaite..

0 Compliments
Message 3 sur 30
6 365 Visites

Mais tu peux faire un structure conditionnelle avec tous cas que tu désires. Il n'y a certe que 2 états mais tu peux changer toute la couleur de ton indicateur . Je t'avoue que je comprends pas bien pourquoi ca ne marcherait pas dans ton cas.

 

Regarde ce nouvel exemple. Dis moi si je suis à coté ou pas ?

----------------------------
-- Bastauss -- CLA/CTD --
----------------------------
0 Compliments
Message 4 sur 30
6 358 Visites

Oui dans ton exemple je peux changer toute la couleur du bouton mais comme tu peux le voir je vais importer des images. Le design n'est pas exactement celui la mais presque et ça doit être absolument comme cela ( je ne sais pas pourquoi mais sur ce point c'est pas moi qui décide malheureusement^^ ).

 

Il faut donc que par exemple quand on clique sur le bouton (qui est a OFF = le haut blanc et le bas rouge) ce dernier garde le bas rouge mais le haut devient orange (puis vert quand on aura reçu l'information ON). Ou alors tu pense faire ça avec deux boutons?pour pouvoir changer juste la moitié?

 

Merci et désolé peut être je ne suis pas très clair dans mes explications.

0 Compliments
Message 5 sur 30
6 356 Visites

Si tu peux mettre 2 boutons c'est le plus simple. Tu peux les lier dans ton code et en rendre qu'un seul utilisable selon le cas.

 

Tu aurais alors le rendu désiré. 

 

Tu utilises une structure condition et dans chaque cas tu mets les 2 controles à jour. Je l'ai fais rapidement et juste avec les couleurs dans l'exemple.

 

Du moins c'est ce que je ferais.

----------------------------
-- Bastauss -- CLA/CTD --
----------------------------
Message 6 sur 30
6 342 Visites

Oui j'avais pensais à ça aussi mais c'est un peu de la bidouille^^ mais ça reste une bonne idée et une des seules que je vois. Merci beaucoup pour ton aide !

 

 

Je vais quand même voir si je peux trouver une autre méthode car en fait ce type de bouton sera dupliquer environ 20 fois sur une IHM qui doit être relativement rapide et je ne sais pas du tout si ça consomme de la ressource( les noeuds de propriétés etc...). Le sais-tu?

 

Aussi sans vouloir abuser je me demandé comment tu fait pour avoir ton bouton sous cette forme (ou on clique et on choisis quel contrôle)? et ou se trouve la constante de couleur que tu met dans le cluster? 

2.png

1.png

 

 

Merci encore Bastauss!

 

0 Compliments
Message 7 sur 30
6 339 Visites

Mais de rien Clement (enfin je suppose ^^) !

 

Alors pour le bouton référence, tu fais un clic droit sur l'icone de ton controle sur le diagramme créer > référence.

 

Ensuite ce que je te conseille si ce type d'ensemble de bouton se répète dans ton code c'est faire un sous VI de mise à jour. Tu pourrais y passer la référence du bouton ON, celle du bouton OFF et le cas que tu veux afficher. Cela te permet de coder qu'une seule fois t'es noeuds de proprétés et c'est beaucoup plus propre.

 

Pour la consomation de de ressources je ne saurais trop te dire. Ce que je sais c'est que si tout tes indicateurs doivent se mettre à jour ensemble et que cela prend trop de temps tu peux essayer la propriété suivante :

 

exemple.png

 

Elle te permet de ne pas rafraichir la face avant. Le mieux avant la mise à jour simultané d'un grand nombre d'éléments de la face avant est de coupé le rafraichissement juste avant de commencer la mise à jour et de le remettre actif après les avoir effectué. Les éléments vont alors tous se mettre à jour ensemble à la place de le faire les uns après les autres. Cela utilise donc moins de ressources car il y a un seul rafraichissement.

 

Dans l'exemple au-dessus lorsque tu désactives le rafraichissement, la valeur dans Numeric continue de changer mais cela n'est pas visible. Tu la vois changer que si le rafraichissement est activé.

----------------------------
-- Bastauss -- CLA/CTD --
----------------------------
0 Compliments
Message 8 sur 30
6 332 Visites

D'accord merci des conseils et oui je pensais en faire un sous VI une fois que j'aurai obtenu le resultat que je veux. Par contre dans le sous VI il ne faut pas mettre la boucle while si? Et aussi je viens de remarquer que si je personnalise le bouton Ok (import d'une image par exemple) je ne pourrai plus changer la couleur avec les noeuds de propriétés..

 

Pour les ressources je verrai quand l'applications aura pris de l'ampleur si c'est trop lent j'utiliserai ta métode pour bloquer le refraichissement. 

0 Compliments
Message 9 sur 30
6 324 Visites

Bonjour,

 

Je n'ai pas très bien compris ton besoin, mais si tu peux avoir des images de ton bouton dans ses 4 positions, tu peux alors utiliser un menu déroulant d'image.

Si tu prends celui qui est dans la palette Classique>>Menu déroulant, tu peux personnaliser son apparence au mieux pour rendre invisible tout élément de décoration superflu.

Olivier L. | Certified LabVIEW Developer


0 Compliments
Message 10 sur 30
6 321 Visites