Probléme avec createfile et affichage d'erreur
Salut à tous,
j'ai un petit programme qui communique par liaison série avec des appareils, jusque là j'avais aucun probléme. J'ai donc rajouter un switch USB série pour avoir plus de port disponible les 4 nouveaux port s'appelle COM8, COM9, COM10, COM11
Je peux me connecter sur tout mes ports de 1 à 9 sans probléme mais impossible sur les port 10 et 11.
Voila un peut de code pour vous montrer comment je procéde:
j'ouvre mon port
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| hSerie=CreateFileA((port.c_str()), //Name of serial port GENERIC_READ|GENERIC_WRITE, //to write and read on the port
0, //Share mode
NULL, // no security attributes
OPEN_EXISTING,
0, //NULL=synchronous, else asynchronous
NULL); // hTemplate must be NULL for comm devices
CheckInit=init_serie(); //to initialize serial port
if (CheckInit==0)
{
Carte=2;//impossible connection at port
return(0);
} |
J'ai toujours Carte=2 donc on passe au test et là 2e probléme
Code:
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
| int init_serie()
{
DCB dcb;
DWORD N_ERROR;
BOOL Success;
char *errorMessage;
//checking of opening
if(hSerie==INVALID_HANDLE_VALUE)
{
//file not create
N_ERROR=GetLastError();
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),
0,(LPTSTR)&errorMessage,0,NULL);
MessageBoxA(0, errorMessage, "Erreur", MB_ICONERROR | MB_OK);
}
Success=GetCommState(hSerie,&dcb);
if(!Success)
{
return(0);
}
dcb.BaudRate=CBR_19200; // set the baud rate
dcb.ByteSize=8; // data size, xmit, and rcv
dcb.Parity=NOPARITY; // no parity bit
dcb.StopBits=ONESTOPBIT; // one stop bit
dcb.XonLim=100;
dcb.XoffLim=100;
dcb.fOutxCtsFlow=FALSE;
dcb.fOutxDsrFlow=FALSE;
GetCommState(hSerie,&dcb);
SetCommState(hSerie,&dcb);
return (1);
} |
Comme vous le voyez j'ai mis un MessageBox pour afficher le numéro d'erreur mais le probléme c'est que je récupére "L" donc ça m'avance pas beaucoup.
:arrow: Est-ce que quelqu'un a une solution pour afficher ce numéro? ou savez vous pourquoi je peux pas me connecter à tout les ports?