Используй API-функцию (описана в справке SDK):
Код:
PurgeComm(
HANDLE hFile, // дескриптор порта
DWORD dwFlags // флаг действия
);
// dwFlags - Этот параметр м.б. комбинацией следующих значений:
// PURGE_TXABORT - Прерывает операцию записи в порт даже если она не завершена;
// PURGE_RXABORT - То же для операции чтения;
// PURGE_TXCLEAR - Очищает выходной буфер (запись), т.е. компьютер можно не перезагружать ;
// PURGE_RXCLEAR - Очищает входной буфер (чтение).
пример:
Код:
//очитска
PurgeComm(Com,PURGE_RXCLEAR or PURGE_TXCLEAR);
// проверка буфера
function ReadCh(Var Ch:Byte): dword;
var
n : dword;
begin
Readfile(Com, ch, 1, result, nil);
end;
хотя можно организовать цикл чтения порта до тех пор пока не будут возвращаться пустые значения - это и означает, что буфер порта пуст.