Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   incoveniente para comparar los valores en Async Professional ApdComPort (https://www.clubdelphi.com/foros/showthread.php?t=95315)

LACV 03-08-2021 22:44:15

incoveniente para comparar los valores en Async Professional ApdComPort
 
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

Código Delphi [-]
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

Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 22:09:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi