Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1579 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème d'ouverture de port COM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'ouverture de port COM

n°2209381
flamme34
Posté le 06-11-2013 à 10:51:29  profilanswer
 

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 :
  1. bool clPORT_COM::Init_LectureEcriture(void)
  2. {
  3. DCB dcb = {0};
  4. BOOL OK;
  5.     hPortCom = CreateFile(Nom_Port.c_str(),
  6.                            GENERIC_WRITE | GENERIC_READ,
  7.                            0,
  8.                            NULL,
  9.                            OPEN_EXISTING,
  10.                            0,
  11.                            NULL);
  12.         if(hPortCom != INVALID_HANDLE_VALUE)
  13.         {
  14.             OK = GetCommState(hPortCom, &dcb);
  15.             if(OK)
  16.             {
  17.                 dcb.BaudRate = Vitesse;
  18.                 dcb.ByteSize = NbDataBit;
  19.                 dcb.Parity = NOPARITY;
  20.                 dcb.StopBits = ONESTOPBIT;
  21.         OK = SetCommState(hPortCom, &dcb);
  22.                         if (OK)
  23.                         {
  24.                                 COMMTIMEOUTS timeout;
  25.                                 timeout.ReadIntervalTimeout = MAXDWORD;
  26.                                 timeout.ReadTotalTimeoutMultiplier = MAXDWORD;
  27.                                 timeout.ReadTotalTimeoutConstant = 300;
  28.                                 timeout.WriteTotalTimeoutConstant = 300;
  29.                                 timeout.WriteTotalTimeoutMultiplier =  MAXDWORD;
  30.                                 OK = SetCommTimeouts(hPortCom, &timeout);
  31.                         }
  32.             }
  33.         }
  34.         else
  35.         {
  36.             OK = false;
  37.         }
  38.        return OK;
  39. }


et voici comment j'appelle ma fonction :  
 
 

Code :
  1. bool CModule::Init()
  2. {
  3.         if (com != NULL)
  4.         {
  5.                 com->Fermer_Port();
  6.                 delete com;
  7.         }
  8.         lock = new TCriticalSection();
  9.         com = new clPORT_COM(numPortCom, vitesse);
  10.         bool connectionOuverte = com->Init_LectureEcriture();
  11.         if (connectionOuverte)
  12.         {
  13.                 AnsiString msg = "C0\r\n";
  14.                 Send( msg);
  15.                 Sleep(100);
  16.                 SetSoftIsReady(true);
  17.         }
  18.         else
  19.         {
  20.                 AFermer = true;
  21.         }
  22.         moduleConnected = connectionOuverte;
  23.         return connectionOuverte;
  24. }


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 :
  1. 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

mood
Publicité
Posté le 06-11-2013 à 10:51:29  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème d'ouverture de port COM

 

Sujets relatifs
Problème pour la carte de France avec OsclassJava's cool 4 - Proglet polyominos - problème !
Problème avec innerHTMLssh2 et readdir problème
RESOLU probleme avec index.htmlproblème de css
[PERL] Probleme avec module Chart::Gnuplot Structure Polynome( probleme d'affichage) en C
Problème Syntaxe PythonProblème d'encodage sur Gnu/Linux
Plus de sujets relatifs à : Problème d'ouverture de port COM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR