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 confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    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 confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    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.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

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

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

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    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 confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    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
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  6. #6
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    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; 
    }
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    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 confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    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 éclairé
    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
    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 confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    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 confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    En fait c'est QueryPerformanceFrequency qui retourne la fréquence.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  12. #12
    Membre éclairé
    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
    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 confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    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
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  14. #14
    Membre éclairé
    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
    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