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 :

Probleme thread rs232


Sujet :

C++Builder

  1. #1
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut Probleme thread rs232
    Bonjour à tous,
    J'essaye de faire ma com rs232 dans un thread, mais le problème c'est que une fois que mon thread est lancé, mon appli est figé mais pas mon PC.
    j'ai mis la priorité du thread au minimum mais ça ne change rien.

    voici mon code dans le thread
    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
    37
    38
    39
    40
     
    //Ouverture du port com
       DCB dcb;
       HANDLE hCom;
       DWORD dwError;
       BOOL fSuccess;
       BOOL bResult;
       DWORD dwEvtMask;
       COMMTIMEOUTS tTimeout;
       unsigned long nBytesRead;
       char *inBuffer;
       int TimeoutRead;
       int i;
       int NbOctet;
       char c;
       hCom = CreateFile(AnsiString("COM1").c_str(),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
       /*----------------------------------*/
       /*    Définition des timeouts       */
       /*----------------------------------*/
       TimeoutRead = 500; // timeout de 500ms
       tTimeout.ReadIntervalTimeout = MAXWORD;
       tTimeout.ReadTotalTimeoutMultiplier = 0;
       tTimeout.ReadTotalTimeoutConstant = TimeoutRead; // pas de time out = 0
       tTimeout.WriteTotalTimeoutMultiplier = 0;
       tTimeout.WriteTotalTimeoutConstant = 0;
       SetCommTimeouts(hCom,&tTimeout);
       AnsiString code="";
       nBytesRead=0;
     
       //Lecture des données
       while(!Terminated)
       {
          bResult = ReadFile(hCom,code.c_str(),25,&nBytesRead,NULL);
          if (nBytesRead!=0) // Il existe des octets lus
          {
             MessageDlg(code.c_str(), mtWarning, TMsgDlgButtons() << mbOK, 0);
          }
       }
       //Fermeture du port com
        CloseHandle(hCom);
    Quelqu'un aurai-il une idée sur ce que je pourrai améliorer

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    avec un Sleep(1) dans la boucle while, ca change rien ?
    Si tu mets un point d'arrêt lorsqu'il est figé, il ne tourne pas dans la boucle infinie ?

  3. #3
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    non ça ne change rien, de plus ma boucle tourne et fonctionne bien.
    mais ce que je ne comprend pas c'est que le thread est normalement un processus à part de ma fiche main (bien que je lance le thread sur le formshow du main)

  4. #4
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Citation Envoyé par BOUBOU81
    non ça ne change rien, de plus ma boucle tourne et fonctionne bien.
    mais ce que je ne comprend pas c'est que le thread est normalement un processus à part de ma fiche main (bien que je lance le thread sur le formshow du main)
    Salut !


    je croi pas que c'est le thread lui même qui fige ton application, mais l'attente de la fin de ce thread qui cause ce problème, esque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application->ProcessMessages();
    dans la boucle while te resoud le problème ?

    (Etant presque jamais developper des thread )


    A+

  5. #5
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Ou lala je suis désolé, je viens de me rendre compte que mon code n'etait pas dans l'execute du thread mais dans le constructeur.
    Je pouvais attendre longtemps.
    Arff j'ai vraiment besoin de vacances merci pour votre aide quand même.
    Je suis désolé

    //désolé oublié de coché//

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    On peut dire que tu as ton problème ?

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

Discussions similaires

  1. problem Thread IllegalThreadStateException
    Par yli_ren dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/07/2007, 08h01
  2. Probleme Thread ( serveur proxy)
    Par izulah dans le forum Linux
    Réponses: 3
    Dernier message: 05/06/2007, 12h10
  3. Probleme Thread, Listener, Random Java
    Par monicaCruZ dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 25/05/2007, 15h56
  4. Probleme convertisseur RS232 vers RS485
    Par nico_ioltech dans le forum Composants
    Réponses: 2
    Dernier message: 05/10/2005, 09h10
  5. [Kylix] Problème de thread
    Par A&Nexus dans le forum EDI
    Réponses: 1
    Dernier message: 03/05/2005, 21h48

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