Ver Mensaje Individual
  #2  
Antiguo 17-08-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Reputación: 25
egostar Va camino a la fama
Post

El componente ApdComPort tiene otros componentes que puedes usar para recibir los datos que estan llegando al puerto serial sin necesidad de calcular el tiempo entre byte y byte, te recomiendo que uses el otro componente que esta en ese tab de nombre ApdDataPacket, ese componente tiene la característica de leer todos los caracteres que llegan al puerto serial y te lo deja en una sola variable que puedes usar para lo que necesitas.

Aqui un ejemplo del uso de este componente:

Código Delphi [-]
 
procedure TLector.ApdDataPacket1StringPacket(Sender: TObject;
  Data: String);
begin
  Linea2 := Data;
  If (Linea2[5] = 'A') or
     (Linea2[5] = 'H') then begin
     Limpiavariables;
     CargaVariables(Linea2);
     ProcesaInformacion('A');
  end;
end;

Lo único que necesitas saber es que caracter está al inicio o al final de la cadena recibida, normalmente en comunicaciones seriales se usan protocolos los cuales te indican que caracteres identifican el inicio y el final de una cadena, por ejemplo Start of Text (#2), End of Text (#3) o no tiene caracter de inicio pero si tiene caracter de fin como un CR.

Lo que tú estas haciendo es leer el puerto todo el tiempo y eso en mi experiencia no es lo mas conveniente, es mejor leer cuando una cadena es recibida completamente y no estar perdiendo caractéres por cuestiones de sincronía.

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita