460
Messages postés4Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention11 janvier 2005
-
10 janv. 2005 à 11:25
460
Messages postés4Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention11 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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]
Vous n’avez pas trouvé la réponse que vous recherchez ?