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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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.
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?