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

C++Builder Discussion :

Problème avec l'utilisation de la fonction clock


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut Problème avec l'utilisation de la fonction clock
    Bonjour tout le monde

    J'explique brievement mon probleme.
    Je suis en stage et je dois calculer des temps de collage et de décollage de certains relais.
    Pour cela je pensais laissé le relais ouvert tout en envoyant un signal à son entrée puis le fermé et ainsi calculer le temps qu'il aura fallu pour qu'il se ferme. Tout ce la se ferait entre le moment ou j'aurai lancé la commande de fermeture et le moment ou j'aurai réceptionné le signal.

    Mon problème est que je n'arrive pas du tout à savoir comment faire à part en utilisant la fonction clock.
    Mais je n'arrive pas du tout à m'en servir.

    Si quelqu'un pouvait m'aider

  2. #2
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 045
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 045
    Points : 8 258
    Points
    8 258
    Par défaut
    Je ne connais pas la fonction clock ?
    Tu la trouvé où ?

    Tu peut utiliser la fonction GetTickCount (Api win32) pour mesurer des temps.
    ou QueryPerformanceCounter si tu veux plus de précision.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    je l'ai trouvé dans l'aide de borland c++ builder

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    GetTickCount et QueryPerformanceCounter ne sont pas dans l'aide de borland alors comment m'en servir?

  5. #5
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 045
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 045
    Points : 8 258
    Points
    8 258
    Par défaut
    Mea-culpa pour clock elle existe bien !

    pour tester sur une form tu mets un bouton et un label puis dans le ckick
    du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <time.h>
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
          int t1 = clock();
          Sleep(100); // on mes 100ms pour le test
          int t2 = clock();
          Label1->Caption = t2-t1;
    }
    elle te retoune le temps en ms entre les deux appels

  6. #6
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 045
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 045
    Points : 8 258
    Points
    8 258
    Par défaut
    GetTickCount s'utilise de la même façon.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm1::Button1Click(TObject *Sender) 
    { 
          int t1 = GetTickCount(); 
          Sleep(100); // on mes 100ms pour le test 
          int t2 = GetTickCount(); 
          Label1->Caption = t2-t1; 
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Merci beaucoup, je l'ai essaye et g l'impression que c'est exactement ce dont j'avais besoin.

    une dernière question, QueryPerformanceCounter marche comment?
    parce ce que j'ai lu que cette fonction est très performante et j'en aurai peut etre besoin pour améliorer pour projet
    Merci d'avance

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    cela se confirme, je viens de tester en remplacant par 1 dans le sleep et la fonction me sort toujour 15 ms.
    Il me faut absolument une fonction qui puisse me donner des temps de l'ordre du dixième de la milliseconde.
    Est-ce possible? Si oui comment?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Pour QueryPerformanceCounter j'ai eu l'occasion de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    LARGE_INTEGER Start, End;
     
    QueryPerformanceCounter(&Start);
      //le truc à mesurer
    QueryPerformanceCounter(&End);
     
    double temps = End.LowPart-Start.LowPart;
    Par contre je ne me rappelle pas de la précision.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    merci ca a l'air bien mais quel est l'unité de la variable temps?

  11. #11
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 045
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 045
    Points : 8 258
    Points
    8 258
    Par défaut
    En fait c'est QueryPerformanceFrequency qui retourne la fréquence.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    J'ai posé la question de l'unité de temps dans un autre sujet mais ça n'a pas inspiré beaucoup de monde et je n'ai pa trouvé le renseignement ailleur, du coup je peux seulement te faire part de mon avis : je dirai que ce sont des microsecondes.

  13. #13
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 045
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 045
    Points : 8 258
    Points
    8 258
    Par défaut
    je dirai que ce sont des microsecondes.
    Non
    L'unité de temps c'est 1 divisé par la fréquence
    La fréquence étant differente d'un PC à l'autre. Elle est retournée
    par la fonction QueryPerformanceFrequency

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Merci pour la précision; chez moi ça donne une valeur de l'ordre de 2,8 µs (si tant est que la QueryPerformanceFrequency renvoie une valeur en Hz).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec l'utilisation de la fonction dataset
    Par sohoney dans le forum MATLAB
    Réponses: 1
    Dernier message: 11/01/2013, 16h21
  2. Réponses: 3
    Dernier message: 19/12/2009, 11h49
  3. Utilisation de fonction JavaScript
    Par Kirite dans le forum XMLRAD
    Réponses: 5
    Dernier message: 22/06/2009, 17h39
  4. Réponses: 3
    Dernier message: 07/05/2008, 13h30
  5. problème avec l'utilisation d'une fonction
    Par mcspawn dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 15h39

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