`PurgeComm () ' может отбрасывать все символы в одном или обоих буферах Tx и Rx и прерывать любые ожидающие операции чтения и / или записи на порту. Чтобы сделать все для порта, скажите что-то вроде:
PurgeComm(hPort, PURGE_RXABORT|PURGE_TXABORT|PURGE_RXCLEAR|PURGE_TXCLEAR)
Вы также можете убедиться, что вы обработали или явно проигнорировали все ожидающие ошибки на порту, возможно, с ClearCommError()
.
ReadFile()
можно использовать для очистки только буфера Rx и FIFO путем считывания всех доступных байтов в буфер отходов. Обратите внимание, что вам может потребоваться «неестественное» знание, чтобы правильно определить размер буфера, или повторять вызов ReadFile()
, пока он больше не скажет.
Однако чтение буфера для очистки будет иметь смысл, только если вы сначала установили COMMTIMEOUTS «рационально» или чтение будет блокироваться до тех пор, пока буфер не будет заполнен.