tizana
-
13 sept. 2012 à 18:27
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
14 sept. 2012 à 09:31
Bonjour,
Je suis en train de réaliser une application sous VB en utilisant un timer qui se déclenche à chaque début d’heure c.a.d « 10:00:00, 11:00:00, 12:00:00, 13:00:00 ….. 23:00:00 >> pour réaliser une tache précise.
Mais le problème avec ce timer c’est qu’il est parfois imprécis c a dire il se déclenche parfois après une ou deux seconde du début de l’heure (10:00 :01 ou 10 :00 :02) et parfois il se déclenche avant le début d’heure (09 :59 :59). Ce qui me cause un problème dans mon programme.
Voici comment je calcule le timer1.interval() .
Le timer1 est calculé dans le load() lors de l’ouverture de l’application et dans le timer1.tick() {recharge de la nouvelle valeur du timer.interval()}
LOAD()
Dim date_next As Date
Dim date_now As Date = DateTime.Now
date_next = DateAdd(DateInterval.Hour, 1, date_now)
date_next = Mid(date_next.ToString, 1, Len(date1.ToString) - 6) + ":00:00"
Timer1.Interval = DateDiff(DateInterval.Second, date_now, date_next) * 1000
Par exemple si j’ouvre l’application vers 09 :35 :00 le 13/09/2012 le prochain déclenchement du timer devrait être vers 10:00 :00 le 13/09/2012.
date_now = 13/09/2012 09:35:00
date_next = 13/09/2012 10:00:00 (j’ajoute une heure au temps actuel et je mets les seconds et les minutes à zéro)
Timer1.Interval 1500 * 1000 1500000
Le même calcule est utilisé lors du déclenchement du timer, je recalcule les nombre de milliseconde qui me sépare de la prochaine heure au lieu de mettre directement dans le timer interval = 3 600 000. Pour plus de précision
Je ne sais pas pourquoi j’obtiens ce genre de problème sachant que le timer est censé être un outil précis pour le calcul temporel. Peut-être que ce timer utilisé est un timer software au contraire des timer utilisé dans les microcontrôleurs, qui eux sont des timer « HARDWARE» et indépendant, et fonctionnent en parallèle du processeur.
Y’a-t-il un autre moyen que je peux utiliser au lieu du timer ? et merci
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 13 sept. 2012 à 18:34
Bonjour,
Change ton fusil d'épaule ===>>
Donne une fréquence plus élevée (intervalle très court) à ton timer.
Dans son code : déclenche lorsque l'heure/date système est celle prévue pour le déclenchement. Redéfinis dans la foulée la prochaine date/heure de déclenchement.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 sept. 2012 à 00:29
Salut
En effet, les Timers n'ont pas une réputation de précision.
Sous VB6, le l'objet Timer ne redémarre qu'à la fin du traitement du code inclus dans l'objet, donc perte de quelques pouillièmes de secondes à chaque cycle.
Une autre solution : Puisque tu dois surveiller les heures fixes, laisse ton Timer à 1 seconde (ou moins) et surveille le changement d'heure. Pour cela, tu sauvegardes l'heure courante dans une variable qui conservera son contenu entre deux cycles du Timer.
Dans le Timer, si l'heure actuelle est différente de celle mémorisée, twingo, on a changé d'heure --> lance ton programme.
Avant de sortir, il faudra penser à mémoriser la nouvelle heure.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 14 sept. 2012 à 07:30
Bonjour, jack,
petite faute de frappe ===>>
est différente de
===>>
est supérieure ou égale à
(c'est d'ailleurs ce que je lui disais plus haut).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?