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

Windows Discussion :

interruption d'horloge sous windows


Sujet :

Windows

  1. #1
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 49
    Points : 76
    Points
    76
    Par défaut interruption d'horloge sous windows
    J'aimerai lancer à intervalle de temps régulier une fonction basée sur un interruption d'horloge. Je voudrais savoir si c'est possible sous windows et si possible, si vous pouviez me donner une source ou un site web qui expliquerai comment faire.

    Voila j'ai vu qu'en dos 16 bits on pouvait faire comme çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
    #include <dos.h>
    #include <conio.h>
    
    #define INTR 0X1C    /* The clock tick interrupt */
    
    void interrupt ( *oldhandler)();
    
    int count=0;
    
    void interrupt handler()
    {
       /* increase the global counter */
       count++;
    
       /* call the old routine */
       oldhandler();
    }
    
    int main(void)
    {
       /* save the old interrupt vector */
       oldhandler = getvect(INTR);
    
       /* install the new interrupt handler */
       setvect(INTR, handler);
    
       /* loop until the counter exceeds 20 */
       while (count < 20)
          printf("count is %d\n",count);
    
       /* reset the old interrupt handler */
       setvect(INTR, oldhandler);
    
       return 0;
    }
    Balises codes rajoutées

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut


    Tu cherches en fait la fonction dans l'API Windows qui lance à intervale régulier une fonction ?

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Sous Windows, tu peux utiliser des timers (le temps est entré en ms, mais la précision est de l'ordre de 15ms)

    Mais pour ce genre de chose, il vaut mieux dédier un thread entier à cela car les événements de timers ont une priorité inférieure au reste...
    (Et si tu n'as pas besoin d'une grande précision, tu peux utiliser un thread à haute priorité qui appelle Sleep() en boucle entre chaque exécution de fonction...


    En fait il y a pas mal de moyens différents sous Windows, aussi que cherches-tu à faire précisément?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par mumuri
    Voila j'ai vu qu'en dos 16 bits on pouvait faire comme çà
    sous Windows il faut utiliser des API ; prendre QueryPerformanceCounter la fonction la + précise ou bien GetTickCount ou bien des timers avec SetTimer

  5. #5
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 49
    Points : 76
    Points
    76
    Par défaut
    en fait, je vais avoir un systéme qui tourne périodiquement à 50 ms (1 traitement toutes les 50 ms), donc 10 ms ca risque d'être limite.


    Citation Envoyé par Miles


    Tu cherches en fait la fonction dans l'API Windows qui lance à intervale régulier une fonction ?
    c'est bien çà et je n'avais pas vu la balise code dsl

    d'aprés ce que j'ai vu là, QueryPerformanceCounter permet de donner un temps plus précis que les timers classiques. ce que je voudrais c'est lancé une fonction à temps d'exécution variable associé à une interruption basée sur l'horloge systéme.
    http://www.developpez.net/forums/showthread.php?t=54282

  6. #6
    mat.M
    Invité(e)
    Par défaut
    >>>associé à une interruption basée sur l'horloge systéme.

    aaargh on ne peut pas appeler des interruptions en win32; c'est pas comme sous Ms-Dos ou on pouvait faire cela.
    Faut le dire en quelle langue ?

Discussions similaires

  1. Desynchronisation de l'horloge sous Windows 7
    Par C3siuM dans le forum Windows 7
    Réponses: 2
    Dernier message: 22/01/2011, 21h40
  2. interruption irq et compagnie sous windows
    Par emric591 dans le forum Windows
    Réponses: 2
    Dernier message: 22/11/2006, 13h17
  3. Peut-on faire appel aux interruptions sous Windows ?
    Par lorenfar dans le forum Assembleur
    Réponses: 10
    Dernier message: 09/05/2005, 18h42
  4. Appel d'interruption DOS ou BIOS sous Windows (mode protégé)
    Par SteelBox dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/04/2004, 10h30
  5. Les interruptions sous Windows et Linux
    Par Descartes dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 07/06/2003, 22h42

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