Ver Mensaje Individual
  #3  
Antiguo 25-11-2013
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿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 [-]

   // Espero a que llegue algo máximo 10 segundos
   segundos := 10;
   while ((FrmPrincipal.resp <> '') and (Segundos > 0))do
   begin
      Sleep(1000);
      dec(Segundos);
      Application.ProcessMessages;
   end;

   if (Segundos = 0) then 
      // Error
      ...
   else
      // Proceso el mensaje
   ...

Otra opción revisar la respuesta cada segundo:
Código Delphi [-]
   // Espero a que llegue algo
   while (FrmPrincipal.resp <> '') do
      Application.ProcessMessages;
   // Espero un poco más suponiendo que solo llegó la primera parte de la respuesta
   Sleep(100);

   // Proceso el mensaje
   ...

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 [-]
   // Espero a que llegue algo
   while (FrmPrincipal.ComPort.InputCount = 0) do
      Application.ProcessMessages;
   // Espero un poco más suponiendo que solo llegó la primera parte de la respuesta
   Sleep(100);

   // Proceso el mensaje
   ...
Responder Con Cita