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

MFC Discussion :

Gestion du port série


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut Gestion du port série
    Bonjour,

    je travaille actuellement sur un programme qui doit me permettre de gérer le port série. J'ai regardé les FAQ à ce sujet et bien que cela m'ait aidé, j'ai encore un problème que je n'arrive pas à résoudre.

    Dans mon programme j'utilise un Thread qui va "scruter" le port série et attendre qu'un message survienne. Dès qu'il en aperçoit un, il va essayer de lire le message reçu.

    La détection du message avec : WaitCommEvent marche bien (la fonction renvoie TRUE), mais la lecture avec ReadFile renvoie toujours FALSE. Je ne comprends pas pourquoi... Si une bonne âme pouvait m'aider...

    Voici mon code :

    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
     
    static DWORD WINAPI ComWatchProc (LPVOID lpData)
    {
      CCom* com = (CCom*)lpData;
      com->SetCommMask(EV_RXCHAR);
      DWORD		dwEvtMask;
      while(1)
      {
        if (WaitCommEvent (com->m_hCom, &dwEvtMask, NULL)==TRUE)
        {
            char sz[1000];
            OVERLAPPED ov;
            DWORD countread = 0;
            if (ReadFile( com->m_hCom,sz,sizeof(sz),&countread,&ov )!=FALSE)
            {
              AfxMessageBox(CString(sz,countread));
            }
            else
            {
              AfxMessageBox("ReadFile renvoit FALSE");
            }
        }
        else
        {
          AfxMessageBox("WaitCommEvent renvoit FALSE");
        }
      }
      return 0;
    }
    merci

  2. #2
    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 518
    Points
    41 518
    Par défaut
    Quelle est l'erreur renvoyée ?
    (Essaie GetLastError() + FormatMessage())
    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.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    Le code d'erreur est 6

    6 The handle is invalid. ERROR_INVALID_HANDLE

    Il semblerait donc que mon handle soit invalide, ce que je ne comprends pas puisque j'utilise le même dans le WaitCommEvent...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    bonjour,

    As tu reellement envie de lire sizeof(sz) caracteres au niveau de ta lecture. Il me semblait que ce parametre est le nombre de caractere devant etre lu, la fonction retourne donc false si il ne sont pas lu et si tu ne les reçois pas tu n'arrete pas le read avant la fin du timeout .

    Regarde peut etre de ce cote en commençant uniquement en recevant 1 seul char puis plusieurs pour voir si tu reçois qqchose

    bon courage

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    salut, tu as regardé la classe de farscape ? http://c.developpez.com/faq/vc/?page...WithSerialPort

  6. #6
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    Oui c'est ce que j'ai regardé avant de coder

Discussions similaires

  1. page WEB gestion de port série à distance ser2net
    Par dr_jarod dans le forum Développement
    Réponses: 0
    Dernier message: 09/08/2012, 13h17
  2. existe t'il un tampon dans la gestion du port série ?
    Par gastoncs dans le forum VB.NET
    Réponses: 4
    Dernier message: 04/11/2011, 08h30
  3. PHP et gestion de port série
    Par timbs dans le forum Langage
    Réponses: 3
    Dernier message: 19/06/2008, 21h17
  4. Api pour la gestion du port série et JRE sur un ancêtre
    Par Orian dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 29/01/2007, 18h22
  5. [CCom] Gestion du port série
    Par Marthym dans le forum MFC
    Réponses: 6
    Dernier message: 23/11/2005, 09h53

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