Pb avec PurgeComm sru port serie RS232

jujunio Messages postés 37 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 22 septembre 2010 - 25 oct. 2005 à 16:47
 toto9164 - 8 oct. 2012 à 17:46
Bonjour à tous,

Je travaille sur un projet qui communique avec un port COM.
j'arrive très bien à établir la connexion et à lire les trames qui arrivent sur un port com. Les trames ont une longueur fixe et mon programme attend des trames de longueur 26. Cependant quand je reçois des trames de longueur supérieur à 26, les 26 premiers champs sont traités et le reste provoque ensuite un décalage dans mes données.

Je veux donc pouvoir vider le buffer quand je reçois des trames supérieurs à 26.
Pour cela j'utilise la fonction purgeCommIn() mais elle ne supprime pas tout le temps les données en trop :

ex. :
Trame N°1 : ABCD.........XYZ --> trame longueur fixe = 26
Trame N°2 : ABCD.........XYZZZZZZ --> trame trop longue = 32
Trame N°3 : ZZZZZABCD.....TUVWXYZ --> décalage de la trame suivante à cause de la trame N°2

void CR232::PurgeCommIn()
{
PurgeComm(hCOM,PURGE_RXCLEAR | PURGE_TXCLEAR);
//PurgeComm(hCOM,PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);

}

Merci d'avance pour votre aide.

1 réponse

Bonjour,

Je sais que j'arrive 7 ans après la guerre mais j'ai actuellement un problème similaire avec PurgeComm. Serait-il possible d'avoir une idée d'où pourrait provenir le problème?

Merci d'avance
0
Rejoignez-nous