PDA

Ver la Versión Completa : incoveniente para comparar los valores en Async Professional ApdComPort


LACV
03-08-2021, 22:44:15
Buena tarde estoy realizando una aplicacion para leer basculas digitales; estoy realizado la conexion y recibo correctamente el dato con este poco de codigo

estoy usando el componente Async Professional ApdComPort


procedure TFrmIndicador.ComPortConexTriggerAvail(CP: TObject; Count: Word);
var
I: Word;
C: String;
begin

for I := 1 to Count do
begin
C := C + ComPortConex.GetChar;
end;

LbIndicador.Caption := C;
end;


pero me estan pidiendo que si el dato que recibo esta cambiado continuamente no permita capturar el dato y la verdad no e podido realizarlo e intentado hacerlo con un timer pero no lo e logrado lo ultimo que e intentado es esto


procedure TFrmIndicador.Timer1Timer(Sender: TObject);
var
dato: string;
begin

dato := LbIndicador.Caption;
Sleep(1000);

if C = dato then
begin
BtnGuardar.Enabled := true;
StLMovimiento.NotLitColor := clBlack;
StLPesoBruto.NotLitColor := clLime;
end
else
begin
BtnGuardar.Enabled := false;
StLMovimiento.NotLitColor := clLime;
StLPesoBruto.NotLitColor := clBlack;
end;

end;


gracias de antemano

Neftali [Germán.Estévez]
04-08-2021, 12:32:53
Tendrías que poner un ejemplo de datos recibidos.
Por lo que entiendo, lo que quieren es que detectes un peso "estable", que mientras el peso está cambiando no lo tengas en cuenta.

Dependiendo de la velocidsad de lectura, lo que podrías hacer es quedarte con la última 10 lecturas, por ejemplo (o con las últimas 50, dependiendo de la velocidad de lectura). Y con esa lista de lecturas, hacer una función que te devuelve si el valor de la lista es estable.

Por ejemplo:

Si recibes: 5,6,5,6,5,5,5,5,5,6 => Estable (teniendo en cuenta % ede error)
Si recibes: 5,8,4,5,1,4,5,6,7,9 => No estable