Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как узнать, есть ли в приемном буфере RS232 данные?

01.01.2007

При помощи функции ClearCommError можно узнать, сколько байт данных находится в буфере приёма (и буфере передачи) последовательного интерфейса.

procedure DataInBuffer(Handle: THandle; 
                       var InQueue, OutQueue: integer); 
var ComStat: TComStat; 
    e: integer; 
begin 
  if ClearCommError(Handle, e, @ComStat) then 
  begin 
    InQueue := ComStat.cbInQue; 
    OutQueue := ComStat.cbOutQue; 
  end 
  else 
  begin 
    InQueue := 0; 
    OutQueue := 0; 
  end; 
end; 

Взято из https://forum.sources.ru