He hecho algunas pruebas con el componente AdpComPort, prueba con este código, haber que tal.
Código Delphi
[-]
var
Form1: TForm1;
Primer,Resto : String;
:::::::::
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
I : Word;
C : Char;
S : String;
begin
S := '';
for I := 1 to Count do begin
C := ApdComPort1.GetChar;
S := S + C;
end;
sleep(100);
if Length(S) = 1 then begin
Primer := S;
end
else begin
Resto := S;
Memo1.Lines.Add(Primer+Resto);
Primer := '';
Resto := '';
end;
end;
Puede ser mejorado, pero lo hice asi al vuelo.
Te explico un poco, en el evento OnTriggerAvail del AdpComPort llega los bytes uno por uno, entonces, al llegar cada paquete leo el primer caracter y espero 100 ms para que llegue toda la cadena restante. Yo uso un Memo para ver la cadena pero tu puedes usar variables.
Podrás mover este parámetro de espera en ms si la cadena es muy grande, pero no lo creo necesario.
Espero te sirva.
Saludos