La solution suivante est pas le meilleur, mais il convient à de nombreux cas:
Lire un grand nombre d'octets à partir du port série rendu vide. Par exemple:
ReadFile (Port, TMP, 4096, & ioread, NULL);
tmp []: est la variable qui contiendra les données que vous ne voulez pas (données flush) IOREAD: Nombre d'octets lus
Ainsi, le ci-dessus va lire 4096 octets à partir du port série. Vous pouvez augmenter le nombre pour vous assurer que vous vous retrouvez avec un port propre après l'instruction.
P.S. Je l'avais utilisé avec Visual Studio 2010, C++, Windows 7 - 64 bits
Il n'existe pas de langage tel que C/C++, ni C ni C++ ne prend en charge les ports série. Cela doit être fourni par votre système d'exploitation - lequel utilisez-vous? –
En outre, vous n'avez pas besoin de "effacer les données" après l'avoir lu. Les ports série sont presque toujours implémentés avec des tampons FIFO. La lecture d'un octet le supprime de ce tampon. – MSalters
Le problème que je vois avec ceci est que les données arrivent à un port série de manière asynchrone. Tout ce que vous savez, c'est que les données que vous venez de lire sont déjà arrivées. Dans le moment suivant, de nouvelles données pourraient être arrivées - ou pas. Lorsque vous videz le port, vous ne savez même pas si vous jetez des données, ni combien ou quoi.Je n'ai aucune expérience avec les protocoles de communication série, alors peut-être que je manque quelque chose d'évident, mais cela me semble étrange. – sbi