Ir para conteúdo
  • Cadastre-se

Daniel Simoes

Fundadores
  • Total de ítens

    26.147
  • Registro em

  • Última visita

  • Days Won

    748

Posts postados por Daniel Simoes

  1. Olá @WINDEL,

    Desculpe a demora na resposta...

    Em 12/02/2024 at 10:31, WINDEL disse:

    Como o tamanho máximo para upload é de 2mb, compartilhei o vídeo no google drive. Segue o link para verificar o vídeo de simulação

    Pode por favor, pressionar Break nesse momento do Timeout, e enviar Print da tela no momento em que a IDE parou ?

    Eu creio que seja um Exception controlado... A rotina do ABECS já preconiza tentar ler o ACK por até 3 vezes, em até 2 segundos.. eu acho que esses exceptions são tratados pelo código abaixo

    procedure TACBrAbecsPinPad.ExecCommand(DoEvaluateResponse: Boolean); 
    ....
          // Send Data and Wait for ACK
          while (AckByte <> ACK) do
          begin
            BlockStart := max(BlockStart, 0);
            SendCommand(BlockStart, BlocksRead);
            AckByte := WaitForACK;
    
            if (AckByte = NAK) then
            begin
              Inc(ACKFails);
              if (ACKFails >= MAX_ACK_TRIES) then
                DoException(CERR_READING_ACK);
            end
            else if (AckByte <> ACK) then
              DoException(CERR_READING_ACK);
          end;  

     

     

  2. ok.. o endereço não tem a tendência de mudar.. então não vejo muito risco, você deixar ele "hardcoded", observe ainda que há endereços diferentes para Produção e Homologação, então se for deixar nos fontes, melhor fazer isso em "runtime"

  3. Humm.. havia algo informado nas propriedades do componente ?

    Se estiver preenchido, ele realmente usa essa informação, omitindo a pergunta, mas o padrão é essa propriedade ficar vazia...

  4. Implementei no Demo do ACBrAbecsPinpad o seguinte Botão, para detectar o Pinpad

    procedure TfrMain.btDetectPinPadClick(Sender: TObject);
    var
      sl: TStringList;
      PortFound: String;
      i: Integer;
    begin
      sl := TStringList.Create;
      try
        ACBrAbecsPinPad1.Device.AcharPortasSeriais( sl );
        i := 0;
        PortFound := '';
        while (i < sl.Count) and (PortFound = '') do
        begin
          try
            ACBrAbecsPinPad1.Disable;
            ACBrAbecsPinPad1.Port := sl[i];
            ACBrAbecsPinPad1.Enable;
            try
              ACBrAbecsPinPad1.OPN;
              ACBrAbecsPinPad1.CLO;
              PortFound := ACBrAbecsPinPad1.Port;
            finally
              ACBrAbecsPinPad1.Disable;
            end;
          except
          end;
          Inc(i);
        end;
    
        if (PortFound <> '') then
          ShowMessage('PinPad Found on '+PortFound)
        else
          ShowMessage('PinPad not Found');
      finally
        sl.Free;
      end;
    end; 

     

  5. Sabemos que uma aplicação 32 bits, deve apenas carregar DLLs de 32 bits (mesmo que o Sistema Operacional, seja de 64 bits)

    Já se você compila sua aplicação em 64 bits, deverá sempre utilizar DLLs de 64 bits.

    Porém, infelizmente algumas DLLs possuem o mesmo nome, mesmo tendo arquiteturas diferentes, e isso pode levar o desenvolvedor a ficar confuso, na hora de saber qual é a DLL com a arquitetura correta.

    É o caso da PGWebLib.dll, a versão 32 e 64 tem o mesmo nome de arquivo em disco...

    Esse artigo lhe dá algumas dicas de como descobrir qual é a DLL correta a ser carregada, conforme a compilação do seu Binário

     

    1 - Através das váriáveis de ambiente da PGWebLib 4.1.25.x ou superior

    A partir da versão 4.1.25.x, a PGWebLib ganhou uma proteção de segurança e após a execução do instalador do Client Windows, você poderá encontrar as DLLs nas variáveis de ambiente:
    PathPGWebLib e PathPGWebLib_x64

    PathPGWebLib=C:\Program Files (x86)\PayGo\PGWebLib\PGWebLib.dll
    PathPGWebLib_x64=C:\Program Files (x86)\PayGo\PGWebLib\x64\PGWebLib.dll

    Saiba mais sobre a nova DLL PGWebLib, Segura, no tópico abaixo:

     

     

    2 - Inspecionando o arquivo em Disco

    Isso é um pouco mais difícil.. você precisa abrir o binário da DLL e examinar o conteúdo dele...

    Nesse exemplo usamos o programa NotePad++ com o PlugIn HEX-Editor

    image.png

     

    64 Bits

    image.png

     

    32 Bits

    image.png

    Fonte: https://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows

     

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