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);
} |
Partager