Bonjour,
J'utilise le protocole de communication RS232 afin de commander un moteur brushless. Pas de probleme pour l'envoie de message mais je n'arrive pas a avoir la réponse. Voici mon code si quelqu'un voit une erreur .
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
46
47
48
49
50
51
52
53
54
55
56
57
 
bool CDPVServoDrive::OpenRS232Port() {
	_tools=new CDPVTools;
	//Création du fichier COM1 permettant la communication
	hComm=CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
	if(hComm==INVALID_HANDLE_VALUE)
	{
		AfxMessageBox("erreur");
		return false;
	}
	//Réglage des paramètres de communication
	GetCommState(hComm,&car_com);
	car_com.BaudRate=CBR_9600;
	car_com.ByteSize=7;
	car_com.StopBits=TWOSTOPBITS;
	car_com.Parity=NOPARITY;
	SetCommState(hComm,&car_com);
	//Réglage des paramètres moteur permettant le déplacement par soft du moteur
	char Buf[60]={':','0','1','0','6','0','3','0','6','0','0','1','F','D','1','\r','\n'};
	error=WriteABuffer(Buf);
             char* szText;
             WaitAnswer(200,szText);
	if(error==FALSE)
		return false;
	else
		return true;
}
 
//Fonction permettant l'attende d'une réponse sur le port RS232
BOOL CDPVServoDrive::WaitAnswer(DWORD dwTime, char* szText)
{
	char reponse[256];
	// tant que le délai n'est pas expiré
	DWORD dwLastTime = GetTickCount();
	while(GetTickCount() < dwLastTime+dwTime*1000)
	{
		// pause
		Sleep(100);
		// lire
		if(Read(reponse, sizeof(reponse)))
		{
			AfxMessageBox(reponse);
			if(strstr(reponse, szText) != NULL)
			return TRUE;
		}
	}
	return FALSE;
}
 
//Fonction permettant la lecture de données sur le port RS232
BOOL CDPVServoDrive::Read(LPVOID lpBuffer,DWORD dwSize)
{
	DWORD dwRead;
	ReadFile(hComm, lpBuffer, dwSize, &dwRead, NULL);
	((LPBYTE)lpBuffer)[dwRead] = '\0';
	return (dwRead != 0);
}
Les données sont bien envoyer mais je n'ai aucune réponse me le confirmant. Je n'arrive pas à trouver le problème dans mon code.
Merci de me signaler si vous trouvez un problème