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++ Discussion :

problème d'ouverture de port COM


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut problème d'ouverture de port COM
    Bonjour,

    j'espère que mon message et bien au bon endroit sinon je fais confiance aux modérateurs pour me rediriger.

    Voila mon problème ne semble pas être de programmation mais plus une erreur de windows ou matériel, mais pour être sur je poste mon CODE quand même.

    SUr une fonction Windows mon code plante. Je tente d'ouvrir une connection avec un certain nombre de ports COM ( pour être exacte avec 5 port COM)

    Or de manière aléatoire mon Code boucle sur une certaine ligne.

    Voici ma façon d'initialisé ma convection aux ports COM :

    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
    41
    42
    43
    44
    45
    bool clPORT_COM::Init_LectureEcriture(void)
    {
    	DCB dcb = {0};
    	BOOL OK;
     
        hPortCom = CreateFile(Nom_Port.c_str(),
                               GENERIC_WRITE | GENERIC_READ,
                               0,
                               NULL,
                               OPEN_EXISTING,
                               0,
                               NULL);
     
            if(hPortCom != INVALID_HANDLE_VALUE)
            {
                OK = GetCommState(hPortCom, &dcb);
     
                if(OK)
                {
                    dcb.BaudRate = Vitesse;
                    dcb.ByteSize = NbDataBit;
                    dcb.Parity = NOPARITY;
                    dcb.StopBits = ONESTOPBIT;
     
    	        OK = SetCommState(hPortCom, &dcb);
     
                            if (OK)
                            {
                                    COMMTIMEOUTS timeout;
                                    timeout.ReadIntervalTimeout = MAXDWORD;
                                    timeout.ReadTotalTimeoutMultiplier = MAXDWORD;
                                    timeout.ReadTotalTimeoutConstant = 300;
                                    timeout.WriteTotalTimeoutConstant = 300;
                                    timeout.WriteTotalTimeoutMultiplier =  MAXDWORD;
                                    OK = SetCommTimeouts(hPortCom, &timeout);
                            }
                }
            }
            else
            {
                OK = false;
            }
     
           return OK;
    }
    et voici comment j'appelle ma fonction :

    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
    bool CModule::Init()
    {
            if (com != NULL)
            {
                    com->Fermer_Port();
                    delete com;
            }
     
            lock = new TCriticalSection();
            com = new clPORT_COM(numPortCom, vitesse);
            bool connectionOuverte = com->Init_LectureEcriture();
     
            if (connectionOuverte)
            {
                    AnsiString msg = "C0\r\n";
                    Send( msg);
                    Sleep(100);
                    SetSoftIsReady(true);
            }
            else
            {
                    AFermer = true;
            }
     
            moduleConnected = connectionOuverte;
            return connectionOuverte;
    }
    Or comme je vous l'ai déjà dis mon programme plante ( c'est a dire reste coincé dans la fonction ) a la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OK = SetCommState(hPortCom, &dcb);
    de ma fonction clPORT_COM::Init_LectureEcriture(void)

    Or cette fonction est une fonction Windows et comme je ne sort pas de la fonction je ne peut pas faire le fameux : GetLastError() me permettant de récupérer la cause de l'erreur.

    Quel sont les causes qui pourrait faire planté cette fonction?

    J'ai tenté de communiquer avec ces port COM avec un hyperterminal ( TERMITE) celui ci galère a ouvrir le port COM, il arrive même que cela plante.

    Mais une fois arrivé a les ouvrir avec l'hyperterminal je n'ai aucun problème a les ouvrir avec mon logiciel.


    EDIT : Je suis sous un PC Win 7 64 bits des fois que ça soit utile :p

  2. #2
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut
    Je sais pas si ca peut aider mais j'utilise des cables USB vers RS232.

Discussions similaires

  1. Problème d'ouverture de port Com
    Par Fr33dom dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/08/2009, 14h22
  2. Problème envoi caractère par port COM
    Par Briceba dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/09/2008, 09h29
  3. Problème de lecture du port Com
    Par zoheir13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 26/04/2008, 13h49
  4. Problème de lecture sur port COM
    Par Marthym dans le forum MFC
    Réponses: 10
    Dernier message: 11/04/2006, 15h36
  5. Problème de reception sur Port COM
    Par Revan777 dans le forum C
    Réponses: 9
    Dernier message: 19/04/2005, 21h55

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