IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Le Timer sous VB n’est pas précis


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Par défaut Le Timer sous VB n’est pas précis
    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()}

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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.

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    le composant timer n'est pas précis. Il est basé sur l'horloge système RTM qui, elle-même, est basé sur un cadencement de 18.2ms.

    Donc la précision du timer est, au mieux de 18.2ms plus les arrondis du calcul.


    Mais en plus tu rajoute de imprécision avec tes calculs.

    je pense que recalculer ton interval à chaque déclenchement est une mauvaise méthode.
    Tu veux quoi, une précision à la seconde, tu programme ton interval sur 1000 (1s), tu veux une précision à 100ms, tu programme l'interval à 100.

    Ensuite à chaque déclenchement du timer, tu contrôle l'heure, si ça correspond à l'heure de ton traitement tu fais ton traitement, si ça ne correspond pas tu sors simplement de l'évènement tick

Discussions similaires

  1. Timer sous linux
    Par Ikit dans le forum Linux
    Réponses: 13
    Dernier message: 09/02/2010, 16h34
  2. Réponses: 2
    Dernier message: 06/06/2005, 15h13
  3. probleme de couleur de fond sous mozilla et pas sous IE
    Par soccernet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 27/12/2004, 10h45
  4. [CR8.5] Obligé d'utiliser un sous-rapport ou pas ?
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 09/06/2004, 18h10
  5. Réponses: 2
    Dernier message: 04/06/2004, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo