Yo ahe utilizado estas librerias en varias ocasiones, y no se si tendrás el mismo problema que tuve yo en una ocasión, pero los sintomas son similares. En mi caso fue con una pístola de EAN, leyendo EAN128 ( bastante largos ), lo que hice fue, simplemente esperar el ASCII #13 ( o #10 ), es decir :
Código Delphi
[-]
Completo : boolean; Status : string;
procedure TFormEjemplo.PuertoTriggerAvail(CP: TObject; Count: Word);
var
i : integer;
c : char;
begin
for i := 0 to Count - 1 do
begin
c := Puerto.GetChar;
if( (c > #47) and (c < #91) ) then
Status := Status + c;
if( c = #13 ) then Completo := true;
end;
if( Completo ) then
begin
Completo := false;
Status := '';
end;
end;
No se si tendrás algún carácter que te indique el fin, o que el SMS esta completo. Puedes provar con una cadena, o algo por el estilo.
Yo solo encontré esta solución, y ahora esta funcionando perfectamente casi 2 años....
Espero haberte ayudado....