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 :

[TThread][TTimer] comment utiliser un timer dans un thread ?


Sujet :

C++Builder

  1. #21
    Membre Expert
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Par d�faut
    Merci DjmSoftware !

    Je vais essayer de remodeler mon programme autour de cette class.

    Par contre pour que ca compil j'ai du faire la modification suivante :

    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
    void __fastcall TMyTimerThread::Execute()
    {
         // TRACE("Methode Name " << "TMyTimerThread::Execute() " << "Id "  << this->ThreadID << " Entry at  " <<__TIME__);
        Priority = FThreadPriority;
       while(!Terminated)
        {
           if  (FEnabled)
           {
           	 WaitForSingleObject(MyHandle,FInterval);
             if (!Terminated)  Synchronize(&Timer);
             }
            else
            {
             ResetEvent(MyEvent);
             WaitForSingleObject(MyEvent,INFINITE);
            }
     
        }
     
     
        //---- Placez le code du thread ici ----
        // TRACE("Methode Name " << "TMyTimerThread::Execute() " << "Id "  << this->ThreadID << " Exit at  " <<__TIME__);
    }
    voila, merci encore et je vous dit si je m'en sort ...

    netah

  2. #22
    Membre Expert
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Par d�faut
    Bon, ton composant fonctionne tres bien ...

    mais je pense que le probleme viens de mon code d'acquisition, il me bloque tous ...

    c'est un peut comme si j'avais un Sleep(300) pendant ce temps la impossible de faire executer mon autre TimerThread a 50 ms

    je vais essayer de trouver une feint pour ameliorer mon code d'acquisition ...

    sauf si vous avez une id�e...

    netah

  3. #23
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Bin c'est ton code d'acquisition qu'il faudrais mettre dans un Thread, celui ci serai toujours en train d'acquerir des donn�es, est lorsque tu en as besoin d'une tu r�cupere la derniere acquisition.

  4. #24
    Membre Expert
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Par d�faut
    Citation Envoy� par pottiez
    Bin c'est ton code d'acquisition qu'il faudrais mettre dans un Thread, celui ci serai toujours en train d'acquerir des donn�es, est lorsque tu en as besoin d'une tu r�cupere la derniere acquisition.
    bah c'est bien ce que j'essaie de faire ...

    mais je galere pas mal

  5. #25
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    En fait, pour que ca fonctionne, tu doit avoir ton code d'acquisition dans ton thread, pas dans une autre classe ou ton thread va appeller la fonction.
    Ensuite si ta fiche, ou le reste de ton application ne fait que afficher les acquisition et rien d'autre forc�ment, ca par�tra toujours long, le seul truc que le Thread am�liorera, c'est que si tu appuis sur un bouton l'appliquation r�aira instentanement plutot que d'attendre une acquisition, mais la tu as un Timer � faire tourn� en m�me temps, donc tu devrais voir le Timer fonctionner en meme temps que le Thread, ensuite l'acquisition dans le thread doit se faire en boucle, ce ne doit pas etre une fonction dans le Thread que ta classe appelle a chaque fois, ton thread fais les acqui en boucle, range la derniere dans une variable, et dans la classe Thread tu as une fonction qui permet aux autre classe de lire la variable, du genre :
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    float TThread::LireVariable(void)
    {
      return maVariable ;
    }

  6. #26
    Membre Expert
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Par d�faut
    ok j'essaie ca .

  7. #27
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonjour
    n'a tu pas la possibilit� de modifier ton code d'acquisition pour qu'il travaille avec des <Event win32>
    il est possible sous Win32 d'utiliser la lecture sur les ports s�rielle en mode asynchrone, un Event est automatiquement g�n�r� d�s que par exemple un caract�re se trouve dans le buffer de r�ception

    ton code d'acquisition � l'int�rieur d'un Thread utilise les fonctions <Wait forSingleEvent>, ainsi ton code n'utilise pratiquement pas de resources syst�mes
    dans le corps de ta fonction d'acquisition tu peux g�n�rer des messages <PostMessage>�galement en mode synchrone qui seront trait�s dans ton application principale

    j'ai �crit un tuto qui travaille selon ce principe
    http://djmsoftware.developpez.com/PrintMonitor

    cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

Discussions similaires

  1. comment utiliser les lock dans les threads ?
    Par skad dans le forum G�n�ral Python
    R�ponses: 2
    Dernier message: 15/07/2008, 14h28
  2. comment utiliser un Timer dans ma methode rpc
    Par groupe dans le forum GWT et Vaadin
    R�ponses: 7
    Dernier message: 01/07/2008, 15h01
  3. comment acceder � un timer dans un thread?
    Par Jayceblaster dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 26/07/2007, 09h04
  4. R�ponses: 4
    Dernier message: 16/02/2006, 16h28
  5. Utiliser un timer dans une application console
    Par chavers dans le forum Langage
    R�ponses: 8
    Dernier message: 25/05/2005, 14h07

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