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
|
ErrCom Com::LectureCom (void *lpBuf,unsigned int nCountMax, unsigned int* pCountRead)
{
COMSTAT Stat;
DWORD Errors;
unsigned int nCarALire;
NCarLus = 0;
if(hdl!=NULL)
{
//on pari sur pas d'erreur
EtatCom = ErrCom_None;
//Pour éviter de gérer un time out
//Sleep((unsigned long)500);
int TimeoutRead=500;
timeouts.ReadIntervalTimeout=MAXWORD;
timeouts.ReadTotalTimeoutMultiplier=0;
timeouts.ReadTotalTimeoutConstant=TimeoutRead;
timeouts.WriteTotalTimeoutMultiplier=0;
timeouts.WriteTotalTimeoutConstant=0;
//Pour connaitre le nombre d'octets dans le buffer d'entrée
ClearCommError(hdl,&Errors,&Stat);
nCarALire=Stat.cbInQue;
//On effectue la lecture si il y a des caractères présents
if( (nCarALire>0)&&(nCarALire<=nCountMax) )
{
if(ReadFile(hdl,lpBuf,nCarALire,&NCarLus,NULL)==0)
{
EtatCom = ErrCom_Reception;
}
}
*pCountRead=NCarLus;
}
else
//Le port n a pas été ouvert
EtatCom = ErrCom_Creation;
//Compte rendu de l'exécution
return EtatCom;
} |
Partager