QUESTION EXPERT

Signaler
Messages postés
113
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
16 août 2008
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Bonjour,
Je suis confronté à un petit soucis concerant l'execution d'une application, sur ma form je possede 2 control label dont le contenus change (label 1 et label2).En gros mon code dit ceci :

Dés que label 2 change et si label 1 contient "255" = execution programme

Sachant que le contenus du label2 change 3 ou 4 fois en un millieme de seconde avant d'otenir un contenus stable si je met ce code dans la fonction CHANGE cela va m'executer le programme 3/4 fois aussi donc pas bon.Auriez vous une solution a mon probleme ?
Merci d'avance

5 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
mets un flag à true, une fois le programme lancé...

un fois fait, ne reexecute pas ton programme
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
Salut,

mets un flag à true, une fois le programme lancé...
Je crois qu'il veut plutot lancer le programme en fonction de la dernière valeur affiché..
Fais ça avec un Timer, avec un interval de 10ms par ex. A chaque fois que ton label2 change, tu relance ton Timer (Timer.Enabled False, Timer.Enabled True). Une fois le Timer terminé (événement Tick) tu lance ta commande. Il faudra donc que ton label2 soit stable pendant 10ms pour qu'une commande soit lancé.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
"Sachant que le contenus du label2   change 3 ou 4 fois en un millieme de seconde "

Je pense que ton appli ne modifie pas spontanément le Label2, mais par code ...
Si tel est le cas, ton appli sait lorsqu'elle cesse de modifier (ta sortie de code).
Utilise alors une booléenne globale et, dans l'évènement Change de ton Labl2, n'exécute tes instructions qu'en fonction de l'état de cette booléenne...


Exemple : booléenne globale toto, mise à fausse au départ.


Tu la mets à True à la fin de l'exécution du code qui modifies label2.


 


Dans label2, tu n'exécutes tes instructions que si toto = True


Lorsque tu exécute (toto étant = True) tes instructions, tu repasses à False ta booléenne toto (pour une prochaine exécution).
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Rien ne t'interdit de faire l'économie d'une booléenne en utilisant plutôt la propriété tag de ton label2 pour lui faire jopuer ce rôle.


Je ne comprends par ailleurs pas vraiment l'intérêt d'un affichage si rapide (tu vas avoir le tournis) dans label2

Si ce n'est que pour "voir que ça bouge", un truc :


Tout au long de ton code de modification de label2, fait précéder l'affichage par un caractère quelconque, y compris un espace, si tu veux.


A la dernière modification : affiche sans ce caractère


Dans ton évènement Change de label2, n'exécute que si le 1er caractère n'est pas celui rajouté dans les n-1 modifications
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
jmfmarques>
"pour info le label 2 change tout le temps de valeur et c'est lui qui
change la valeur du label 3 sauf que le label 3 peut parfois avoir la
meme valeur meme si le 2 change.En gros c'est une reception
telecommande lbl 2 signal et le lbl3canal"
http://www.vbfrance.com/infomsg_AIDE-SIMPLE_1145785.aspx

Le signal est extérieur au programme, et donc impossible de le gérer autrement qu'avec un Timer. Mais c'est clair que si on ne lit pas l'autre post de GHG... on ne peut pas comprendre