2009-04-01 6 views

Répondre

7

`PurgeComm()' peut supprimer tous les caractères dans un ou les deux tampons Tx et Rx, et annuler tout en attente de lecture et/ou d'écriture sur le port. Pour tout faire à un port, dire quelque chose comme:

PurgeComm(hPort, PURGE_RXABORT|PURGE_TXABORT|PURGE_RXCLEAR|PURGE_TXCLEAR) 

Vous pouvez également vous assurer que vous avez manipulé ou ignoré explicitement toute erreur en attente sur le port ainsi, probablement avec ClearCommError().

ReadFile() peut être utilisé pour vider uniquement le tampon Rx et FIFO en lisant tous les octets disponibles dans un tampon de déchets. Notez que vous devrez peut-être avoir des connaissances "non naturelles" afin de dimensionner correctement ce tampon, ou répétez l'appel ReadFile() jusqu'à ce qu'il n'ait plus rien à dire. Cependant, la lecture de la mémoire tampon pour la purger n'aura de sens que si vous avez d'abord défini l'ensemble COMMTIMEOUTS de manière "rationnelle" ou si la lecture est bloquée jusqu'à ce que le tampon soit rempli.

0

rinçage un tampon de réception n'a pas de sens, pour obtenir des données sur un port COM tampon de réception il suffit d'appeler ReadFile sur la poignée au port com

FlushFileBuffers force synchroniquement la transmission des données dans les tampons de transmission

PurgeComm vide le tampon sans transmission ou réception (son un supprimer essentiellement)

+0

Oui, mais si vous utilisez un fichier lu, vous dépendez de COMMTIMEOUTS, et ceux-ci ralentissent mon application. Il y a de la camelote dans les tampons que je ne veux pas lire. Si j'utilise le fichier de lecture, la lecture attendra, ou je devrai changer continuellement COMMTIMEOUTS ce que Windows fait si rapidement. –

+0

les termes flush et dump dans context font référence au déplacement ou à l'enregistrement du buffer ne l'invalidant/purgeant pas, spécialement si l'on utilise flush avec le tampon de transmission, ce qui non seulement invalide le buffer mais garantit plutôt la transmission –

Questions connexes