Erreur avec SetCommState, please help me - C++ - Programmation
Marsh Posté le 07-02-2003 à 23:29:59
Je n'ai pas trop lu ton code, mais tu peux te servir de cette page qui donne un exemple similaire.
Déjà, n'ouvre pas ton port COM avec "FILE_SHARE_READ|FILE_SHARE_WRITE".
Marsh Posté le 07-02-2003 à 23:47:40
J'avais eu ce genre d'erreur il y a assez longtemps, ça venait d'une combinaison de databits/parity/stopbits non supportée, d'ou l'erreur 87 (paramètre invalide). J'en avait bavé pour résoudre ce sac de noeuds, il a fallu que je tatonne...
Essaie l'exemple suivant tiré du MSDN pour voir déja si ta structure DCB est correcte. Si tu n'as plus l'erreur 87, alors ça vient de la. A toi ensuite de tatonner pour trouver une combinaison valable
Code :
|
Marsh Posté le 07-02-2003 à 22:32:33
Salut a tous !
voila j'ai un probleme pour ouvrir une liaison avec le port COM2 je vous mets le code pour voir si vous pouvez m'aider a trouver mon erreur. Je n'est pas de probleme de compilation, 0 warning 0 error par contre lors de l'execution l'erreur sur le PC du bahut est a la ligne SetCommState, j'obtiens l'erreur 6 avec GetLastError() ( The handle is invalid. ERROR_INVALID_HANDLE ) par contre avec mon PC j'obtiens l'erreur 87.
Si vous pouvez m'aider ca serait gentil de votre part. Je vous remerci par avance de toutes vos aide.
CPortSerie::CPortSerie(CString _PortCOM)
{
PortCOM = _PortCOM;
int ErreurGetCommState=-1;
int ErreurSetCommState=-1;
IdCom = CreateFile(PortCOM,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
if (IdCom == INVALID_HANDLE_VALUE)
{
cout << "Erreur Invalid_Handle_Value : " << INVALID_HANDLE_VALUE << "\n";
}
ErreurGetCommState = GetCommState(IdCom,&MonDcb);
if (ErreurGetCommState == 0)
{
cout << "Erreur de lors de l'exectution de la fonction GetCommState :" <<
ErreurGetCommState << "\n";
}
MonDcb.BaudRate=CBR_9600;
MonDcb.Parity=0;
MonDcb.ByteSize=8;
MonDcb.StopBits=1;
ErreurSetCommState = SetCommState(IdCom,&MonDcb);
if (ErreurSetCommState == 0)
{
cout << "Erreur de lors de l'exectution de la fonction SetCommState :" << GetLastError() << "\n";
}
// Erreur=-1;
}//fin constructeur par defaut
protected:
HANDLE IdCom;
DCB MonDcb;
CString PortCOM;