¿Qué significa "
pero no camina de esa forma"?
Si el problema es que recibe, por ejemplo, solo parte del mensaje, podrías esperar un poco después de recibir la primera parte.
Código Delphi
[-]
segundos := 10;
while ((FrmPrincipal.resp <> '') and (Segundos > 0))do
begin
Sleep(1000);
dec(Segundos);
Application.ProcessMessages;
end;
if (Segundos = 0) then
...
else
...
Otra opción revisar la respuesta cada segundo:
Código Delphi
[-]
while (FrmPrincipal.resp <> '') do
Application.ProcessMessages;
Sleep(100);
...
Según vi en algún lugar creo que el componente informa cuantos Bytes ha leido.
Podrías esperar hasta que este valor sea mayor que 0. Luego esperas un poco mas para asegurarte de que llega el mensaje completo y luego haces la lectura:
Código Delphi
[-]
while (FrmPrincipal.ComPort.InputCount = 0) do
Application.ProcessMessages;
Sleep(100);
...