PortSerie [Résolu]

Signaler
Messages postés
29
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
8 février 2012
-
Messages postés
29
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
8 février 2012
-
Bonjour, j'ai un probleme avec mon appli, elle se bloque quand je lui dis:



unsigned long I;

ReadFile(h,b,n,(unsigned long * )&I,NULL);



Je ne sais pas comment faire pour que mon programme ne se bloque pas sur cette ligne si le port est "vide";

Ce que je voudrai:

Si (ReadFile ne recois rien)

continuer (partir dans une autre fonction par exemple)

Sinon

ranger la donnée reçue

Fin Si

Merci de votre aide

3 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Dans mes sources, un exemple de base avec les ports.

il faut configurer les timeouts par SetCommTimeouts

Dans ton cas :
COMMTIMEOUTS cto =
{
0xFFFFFFFF, // ReadIntervalTimeOut => retourne même s'il n'y a rien à lire
0, // ReadTotalTimeOutMultiplier
0, // ReadTotalTimeOutConstant
0, // WriteTotalTimeOutMultiplier
0 // WriteTotalTimeOutConstant
};

SetCommTimeouts(hComm, &cto);
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Autre possibilité : déterminer conbien d'octets on peut lire :

COMSTAT cs = {0};
DWORD dwErrors;
ClearCommError(hSP, &dwErrors, &cs);

cs.cbInQue donne le nombre d'octets présent dans le buffer de réception.
Messages postés
29
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
8 février 2012

Merci beaucoup!!!!!!!!!