Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1434 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde, 
Possuo dois módulos no sistema, um cadastro de balança onde é possível realizar a configuração da balança e testes de conexão e pesagem e um módulo de produção onde o peso da balança será utilizado de fato. 
No meu módulo de cadastro de balança eu consigo conectar normalmente e realizar pesagens de teste sem nenhum erro ou retorno estranho da balança. Porém no módulo de produção a pesagem da balança retorna -9 diversas vezes seguidas e depois de muitas tentativas retorna um peso válido. 
Ambos os módulos chamam a classe de balança, para conectar tenho a seguinte função: 
 

FACBrBAL1 := TACBrBAL.Create(nil);
  FACBrBAL1.OnLePeso := OnLePeso;

  // se houver conexão aberta, Fecha a conexão
  if FACBrBAL1.Ativo then
    FACBrBAL1.Desativar;

  // configura porta de comunicação
  FACBrBAL1.Modelo           := TACBrBALModelo(GetIndexBalanca(FBalancaUtilizada.Balanca));
  FACBrBAL1.Device.HandShake := TACBrHandShake(GetIndexHandShake(FBalancaUtilizada.Handshaking));
  FACBrBAL1.Device.Parity    := TACBrSerialParity(GetIndexParity(FBalancaUtilizada.Parity));
  FACBrBAL1.Device.Stop      := TACBrSerialStop(GetIndexStopBits(FBalancaUtilizada.StopBits));
  FACBrBAL1.Device.Data      := FBalancaUtilizada.DataBits;
  FACBrBAL1.Device.Baud      := FBalancaUtilizada.BaudRate;
  FACBrBAL1.Device.Porta     := FBalancaUtilizada.PortaSerial;
  FACBrBAL1.ArqLOG           := FBalancaUtilizada.ArquivoLog;

  // Conecta com a balança
  try
    FACBrBAL1.Ativar;
  except
    raise EKorpMensagem.Create('Atenção! Não foi possível realizar a conexão com a balança. Verifique os parâmetros cadastrados.');
  end;

Função OnLePEso
 

SetRespostaBalanca('Resposta da Balança: ' + String(resposta));
  if (not FBalancaUtilizada.ByteInicial.IsNull) and (not FBalancaUtilizada.ByteFinal.IsNull) then
  begin
    if (FBalancaUtilizada.ByteInicial.ValueOrDefault >= FBalancaUtilizada.ByteFinal.ValueOrDefault) then
      raise EKorpMensagem.Create('Atenção! O Byte inicial não pode ser maior ou igual que o Byte final.');

    tamanhoByte  := FBalancaUtilizada.ByteFinal.ValueOrDefault - FBalancaUtilizada.ByteInicial.ValueOrDefault;

    unidadesInteiras := Trunc(Log10(FBalancaUtilizada.LeituraMaxima.Value));

    palavraCapturada := Copy(String(resposta), FBalancaUtilizada.ByteInicial.ValueOrDefault, tamanhoByte);

    SetRespostaBalanca('Resposta da Balança:' + sLineBreak + String(resposta) + sLineBreak + 'Palavra capturada:' + sLineBreak + palavraCapturada);

    respostaTratada := Copy(palavraCapturada, 1, unidadesInteiras) + ',' +
      Copy(palavraCapturada, unidadesInteiras + 1, length(palavraCapturada));

    FPeso := DecimalRoundDbl(StrToFloatDef(respostaTratada,0), FBalancaUtilizada.Precisao.ValueOrDefault);
  end
  else
    FPeso := peso;

  if not(FPeso > 0) then
  begin
    parteInteiraPeso := Trunc(FACBrBAL1.UltimoPesoLido);
    case parteInteiraPeso of
       0: mensagem := 'Atenção! Não foi possível ler o peso da balança. Verifique os parâmetros cadastrados.';
      -1: mensagem := 'Atenção! Peso instável, tente novamente.';
      -2: mensagem := 'Atenção! Peso negativo.';
      -9: mensagem := 'Atenção! Tempo de resposta expirado.';
     -10: mensagem := 'Atenção! O peso excede a capacidade da balança.';
     else mensagem := 'Atenção! Não foi possível ler o valor: [' + palavraCapturada + ']. Verifique a configuração da balança.';
    end;
    raise EKorpMensagem.Create(mensagem);
  end;

Função LerPeso 
 

Result := 0;
  if Assigned(FBalancaUtilizada) then
  begin
    FACBrBAL1.LePeso(timeOut);
    Result := FPeso;
  end;

Possuo o seguinte LOG da balança onde é possível observar na pesagem de 12:05 o resultado correto feito no módulo de configuração e na pesagem de 12:07 o retorno -9 no último peso lido, essa leitura foi feita no módulo de produção. 

logbalanca

  • Este tópico foi criado há 1434 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.