Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia.

utilizo os componentes do acbr, e parabéns a todos tem nos ajudado e muito.

Recentemente implementei no componente a captura de peso de uma nova balança

a Digitron que até então não existia este modelo configurado, gerando alguns conflitos de variáveis

na recepção da balança.

Gostaria de Saber como faço para mandar esta implementação nova para que a mesma possa ser

compartilhada no controle de versão com todos, pois meu problema e que sempre que atualizo o componente

ela não esta presente.

Fico no aguardo de uma resposta. Para quem devo enviar os fontes da mesma?

Att.

Adauto

  • 2 meses depois ...
  • 4 meses depois ...
Postado

Boa Tarde a todos, me desculpem pela demora, estava meio fora da programação.

Segue a unit da Balança digitron, eu ja utililzo ele e funciona perfeitamente, seria interessando os colegas adicionar no projeto, pois ficaria mais fácil as atualizações, pois hoje toda vez que atualizo tenho que alterar as units.

{$I ACBr.inc}


unit ACBrBALDigitron;


interface

uses ACBrBALClass,

     Classes;


const STX = #02 ;

      ETX = #03 ;

      CR  = #13 ;


type


  TACBrBALDigitron = class( TACBrBALClass )

  public

    constructor Create(AOwner: TComponent);

    function LePeso( MillisecTimeOut : Integer = 3000) :Double; override;

    procedure LeSerial( MillisecTimeOut : Integer = 500) ; override ;

  end ;


implementation

Uses ACBrBAL, ACBrUtil,

     {$IFDEF COMPILER6_UP} DateUtils, StrUtils {$ELSE} ACBrD5, Windows{$ENDIF},

     SysUtils, Math ;


{ TACBrBALToledo }


constructor TACBrBALDigitron.Create(AOwner: TComponent);

begin

  inherited Create( AOwner );


  fpModeloStr := 'Digitron' ;

end;


function TACBrBALDigitron.LePeso( MillisecTimeOut : Integer) : Double;

begin

  fpUltimoPesoLido := 0 ;

  fpUltimaResposta := '' ;


  fpDevice.Serial.Purge ;           { Limpa a Porta }

  fpDevice.EnviaString( #05 );      { Envia comando solicitando o Peso }

  sleep(200) ;


  LeSerial( MillisecTimeOut );


  Result := fpUltimoPesoLido ;

end;


procedure TACBrBALDigitron.LeSerial(MillisecTimeOut: Integer);

Var

  Resposta : AnsiString ;

  Decimais : Integer ;

  St2      : AnsiChar ;

  PI,PF    : Integer ;

begin

  fpUltimoPesoLido := 0 ;

  fpUltimaResposta := '' ;


  Decimais := 100 ;

  Try

     fpUltimaResposta := Copy(fpDevice.Serial.RecvPacket( MillisecTimeOut ),1,10);


     Resposta := Trim( copy( fpUltimaResposta, 2, 6 )) ;


     { Ajustando o separador de Decimal corretamente }

     Resposta := StringReplace(Resposta, '.', DecimalSeparator, [rfReplaceAll]);

     Resposta := StringReplace(Resposta, ',', DecimalSeparator, [rfReplaceAll]);


     try

        if pos(DecimalSeparator,Resposta) > 0 then  { Já existe ponto decimal ? }

           fpUltimoPesoLido := StrToFloat(Resposta)

        else

           fpUltimoPesoLido := StrToInt(Resposta) / Decimais ;

     except

        case Resposta[1] of

          'I' : fpUltimoPesoLido := -1  ;  { Instavel }

          'N' : fpUltimoPesoLido := -2  ;  { Peso Negativo }

          'S' : fpUltimoPesoLido := -10 ;  { Sobrecarga de Peso }

        else

           fpUltimoPesoLido := 0 ;

        end;

     end;

  except

     { Peso não foi recebido (TimeOut) }

     fpUltimoPesoLido := -9 ;

  end ;

end;


end.

Fim

Att.

Adauto

  • Fundadores
Postado

Realmente.. agora que notei...

Os fontes propostos me parecem que encaixam no protocolo "B" da Toledo... Não funcionou como este modelo ?

Existe algum manual deste equipamento ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • 2 semanas depois ...
Postado

Pessoal,

realmente o que fiz foi pegar o Modelo da Toledo e testar, no meu caso a unica alteraçao necessária que precisei fazer foi nesta linha.

procedure TACBrBALToledo.LeSerial(MillisecTimeOut: Integer);

....

Antes Resposta := Trim(Copy(fpUltimaResposta,3,6));

Resposta := Trim(Copy(fpUltimaResposta,2,6));

....

Testei direto em um Balança Digitron e funcionou perfeitamente.

Não conheço nenhum Emulador desta Balança.

Att.

Adauto

  • 1 mês depois ...
  • Fundadores
Postado

Finalmente tive um tempo para adicionar a nova classe aos fontes...

É muito mais simples para nós quando todos os fontes modificados são anexados no Post... bastando apenas usar o WinMerge para fazer a verificação e aplicar as modificações...

O novo modelo de Balança já está no SVN

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • 1 ano depois...
  • Moderadores
Postado

Já pegou a documentação junto ao fabricante? Abra a classe das balanças e siga o mesmo padrão

após implementar, teste e anexe aqui os fontes que será avaliado!

caso tenha dúvidas abra um tópico sobre o desenvolvimento dessa nova balança que os amigos irão lhe ajudar!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.