Timer

460 Messages postés 4 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 11 janvier 2005 - 10 janv. 2005 à 11:25
460 Messages postés 4 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 11 janvier 2005 - 11 janv. 2005 à 16:09
Bonjour

Comment peut on rendre une horloge stable et précise à l'aide d'un timer?
Je déclenche des actions à la seconde près, mais souvent mon horloge saute une seconde!!!
Voici mon code pour mon horloge
MyTime = #12:00:00 PM #
MyTime = Time
Timer1.Enabled = True
Timer1.Intrerval = 1000

Merci d'avance

460

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 janv. 2005 à 12:26
Fais ceci :



MyTime = #12:00:00 PM #
MyTime = Time
Timer1.Enabled = True
Timer1.Intrerval = 250



Ce sera plus fluide


DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
10 janv. 2005 à 12:32
Interval

It@li@
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 janv. 2005 à 18:46
J'ai eu y pas longtemps le même problème que toi concernant l'objet
timer de VB5/6. Après analyse et mesures en labo, j'en ai déduis le
fonctionnement particulier du timer :



L'intervale que tu programme dans la propriété semble non pas être la
durée entre 2 déclenchements comme on pourrait s'y attendre mais plutot
la durée entre la fin d'exécution de ton code timer et le début de
l'exécution suivante. Ainsi si tu met 1000 comme intervale avec une
routine timer qui met 200ms à s'exécuter, ton timer se déclenchera en
fait toutes les 1,2 secondes. Mais le timer semble tout de même se
recaler de temps en temps. Ainsi sur un timer d'une seconde, sur un
test particulier j'ai constaté cette dérive mais cycliquement, j'en ai
obtenu un cycle de 15 secondes avec 14 déclenchement, j'ai perdu un
déclenchement.



Comme dit Dark tu peux diminuer ton intervale et ainsi diviser ton
erreur (par 4 pour 250, par 10 si tu met 100), il te reste plus qu'a
rajouter un peu de code au début de ta fonction pour faire ce que tu as
à faire toutes les secondes (1 fois sur 4 en moyenne pour 250).



Je t'avoue que cette découverte à été une surprise et une possible
explication de quelques bugs inexpliqués qui trainaient depuis quelques
années.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 janv. 2005 à 18:56
Il vaut savoir que le timer NE PEUX PAS se déclencher exactement toutes
les secondes : c'est conditionnés par l'horloge système qui est
cadencée dans les 20 ms environ il me semble, donc pour un intervale de
1000 ms, il se déclenchera au moins dans l'intervale 1000-1020 ms !
Ensuite, ca dépend aussi de l'occupation CPU forcément !

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
460 Messages postés 4 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 11 janvier 2005
11 janv. 2005 à 16:09
Merci, je vais essayer...

460
0
Rejoignez-nous