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.