Ignoro como funciona el componente que mencionas, pero me surge una pregunta, ¿por que no utilizas la API para leer el puerto serie?. Windows dispone de las funciones necesarias para leer el puerto serie de manera sencilla, los componentes lo único que hacen es llamar a esas mismas funciones, pero además incluyen un montón de código a mayores, que a veces en vez de ayudar es una molestia.
¿Que es lo que necesitas exactamente?, es decir, si tienes que leer byte a byte e ir procesando cada uno por separado un simple bucle sera mucho mas rápido que cualquier componente que funcione con eventos. Si no quieres tener tu aplicación congelada mientras ejecutas el bucle, utiliza threads, de esta manera la lectura se realizara en paralelo con hilo principal de tu programa. Un simple loop dentro de un thread es el método mas rápido que existe para leer los bytes, eso te lo garantizo.
Por ejemplo:
Código Delphi
[-]
var
hPort: THandle;
DCB: TDCB;
Estado: TCOMSTAT;
ErrorCode: cardinal;
Leidos: Cardinal;
B: Byte;
begin
hPort:= CreateFile(PChar('\\.\COM1'), GENERIC_READ or GENERIC_WRITE,0, nil,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if hPort<>INVALID_HANDLE_VALUE then
begin
DCB.DCBlength:= sizeof(DCB);
if GetCommState(hPort,DCB) then
begin
with DCB do
begin
BaudRate := CBR_9600;
ByteSize := 8;
Parity := NOPARITY;
StopBits := ONESTOPBIT;
Flags := $1013;
end;
if SetCommState(hPort, DCB) then
begin
PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or
PURGE_RXCLEAR);
repeat
B:= 1;
ClearCommError(hPort, ErrorCode, @Estado);
if Estado.cbInQue > 0 then
begin
ReadFile(hPort,B,1,Leidos,nil);
end else Sleep(100);
until B = 0;
end;
end;
CloseHandle(hPort);
end;
end;
Aunque si vas a leer una gran cantidad de bytes te recomiendo que metas el código dentro de un Thread, para no tener la aplicación parada.