Merci, mais justement comment j'effectue cette lecture en permanance de ce port??
Parce que moi, mas fonction de lecture s'effectue de la facon suivante :
J'appuis sur le bouton CONNECT, puis j'appelle la fonction d'ouverture du port COM, et une fois le port COM ouvert, j'appelle la fonction de lecture du port COM, et une fois ensuite, à l'aide d'une boite de dialogue, j'appelle la fonction d'affichage.
et justement mon problème est que je ne sais pas comment dire à ma fonction de lecture du port COM de s'effectuer tout le temps.. je remplis bien un buffer sous forme de file d'attente, mais cela se stoppe lorsque je l'affiche .....
qu'est ce qu'un THREAD?
voici ma fonction de lecture :
BYTE* CBCMDoc::PortRead()
{
//Initialisation des variables
BYTE *BufferIn;
COMSTAT EtatCom;
DWORD CodeErreur ;
DWORD NbOctetsALire;
CString Chaine;
Chaine.Format(" Appuyer sur ENTER pour commencer");
AfxMessageBox(Chaine);
if (!ClearCommError(hFile,&CodeErreur,&EtatCom))
{
// Handle the error.
CString Chaine;
Chaine.Format(" ClearCommError failed with error %d", GetLastError());
AfxMessageBox(Chaine);
return FALSE;
} // Si rien, alors pas de périphérique.
else // Si présence port, alors définir :
{
NbOctetsALire = EtatCom.cbInQue;
}
//--------- Lecture de tous les octets reçus et stockage dans le tableau BufferIn---
BufferIn=new BYTE[NbOctetsALire];
// Allocation dynamique
if (!ReadFile(hFile , BufferIn , NbOctetsALire , &NbOctetsLus , NULL))
{
CString Chaine;
Chaine.Format(" Could not read to file (error %d)", GetLastError());
AfxMessageBox(Chaine);
return FALSE;
}
// UpdateAllViews(NULL);
//Retour du buffer contenant toutes les données transmises par le port
return BufferIn;
}