Salut je souhaite créer une classe pour la communication serie rs232.
Voici le .h
class CConnexion{
private :
HANDLE hCom,timeEvent;
char ComErr[40],serconfig[40];
unsigned char ATR[20];
int port,baud,bits,stop;
char parite;
public :
CConnexion();
AnsiString ConfigurationCom(int,int,int,int,char);
AnsiString Connexion();
int Open(const char *serconfig);
int setarr(char *buf,unsigned char* a,int n);
int DoReset(const char*serconfig);
int SetConfig(const char *serconfig);
DWORD SRead( BYTE *buf,DWORD byte_to_read,DWORD wait);
~CConnexion();
};
La conception de la classe n'est pas terminer , mais le problee vien du faite que quand je souhiate ouvrir la comunication sur mon port la fonction CREATEFILE me revoi un mauvais handle et je peut rien faire d'autre .
j'ai fait le même programme en C et il a marcher !!!!
Voici la fonction Open ou est contenu cette fonction CREATEFILE
int CConnexion::Open(const char *serconfig){
COMMTIMEOUTS timeouts; //Variable structurée qui fixe un délais pour l'écriture et la lectrure
char string[16];
BOOL fSuccess;
ComErr[0]=0;
memcpy(string,serconfig,4);//Copie en memoire de 4 octets dans string
string[4]=0x00;
hCom = CreateFile(string,GENERIC_READ | GENERIC_WRITE,0, NULL,OPEN_EXISTING, 0,NULL);//Ouverture portCom;
if(hCom==INVALID_HANDLE_VALUE ){
strcpy(ComErr,"Impossible de créer un Handle");//Copie de l'erreur dans ComErr
MessageBox(NULL,ComErr,"Erreur Com",NULL);
return -1;
}
fSuccess = SetupComm(hCom,1024,1024);//Initialisation de la communication avec le lecteur
if (!fSuccess) { strcpy(ComErr,"SetupComm failed");CloseHandle(hCom);return -1; }
fSuccess = GetCommTimeouts(hCom,&timeouts);
if (!fSuccess) { strcpy(ComErr,"GetCommTimeouts failed");CloseHandle(hCom);return -1; }
timeouts.ReadIntervalTimeout=MAXDWORD;
fSuccess = SetCommTimeouts(hCom,&timeouts);//Fixe le delai
return 0;
}
Merci d'avance pour votrte aide !!!
Partager