05-22-2013 07:36 AM - modifié 05-22-2013 07:44 AM
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.
le 05-22-2013 07:47 AM
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.
05-22-2013 07:58 AM - modifié 05-22-2013 07:59 AM
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..
le 05-22-2013 08:13 AM
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 ?
05-22-2013 08:33 AM - modifié 05-22-2013 08:33 AM
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.
05-22-2013 09:06 AM - modifié 05-22-2013 09:06 AM
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.
05-22-2013 09:19 AM - modifié 05-22-2013 09:20 AM
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?
:
Merci encore Bastauss!
05-22-2013 09:44 AM - modifié 05-22-2013 09:45 AM
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 :
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é.
le 05-22-2013 10:29 AM
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.
le 05-22-2013 10:44 AM
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