Jump to content
Notícias do ACBr

click.png

click.png

click.png

click.png

click.png

click.png

clube mobile


Cursos grátis para toda base ACBr
+ Promoção Clube Mobile para o ACBr Pro

Saiba mais

adriano santos

click.png

click.png

click.png

click.png

click.png

click.png

Dipold

Membros
  • Content Count

    20
  • Joined

  • Last visited

Community Reputation

9 Neutral

1 Follower

About Dipold

  • Rank
    Novato

Profile Information

  • Sexo
    Masculino
  • Location
    Paraná

Recent Profile Visitors

955 profile views
  1. A flag PKCS12_ALLOW_OVERWRITE_KEY, segundo a documentação do wincrypt.h, diz: Ou seja, o arquivo com a chave privada armazenada em cache é sempre sobrescrito para o mesmo PFX. Em meus testes, criando o componente múltiplas vezes em runtime, com a alteração sugerida abaixo, o arquivo com a chave privada é criado no diretório de cache dos certificados, mas apenas uma vez. Essa alteração resolve o problema de quem precisa criar o componente em runtime e importar o PFX a cada ciclo de execução.
  2. diff --git a/ACBR2/Fontes/ACBrSerial/ACBrBALClass.pas b/ACBR2/Fontes/ACBrSerial/ACBrBALClass.pas index 1c472026..cb538b4b 100644 --- a/ACBR2/Fontes/ACBrSerial/ACBrBALClass.pas +++ b/ACBR2/Fontes/ACBrSerial/ACBrBALClass.pas @@ -229,7 +229,7 @@ begin if (fpModeloStr = 'Generica') then begin - AguardarRespostaPeso(MillisecTimeOut, True); + Result := AguardarRespostaPeso(MillisecTimeOut, True); Exit; end; ACBrBALClass.pas
  3. Ao usar a balança modelo Genérica, a função FACBrBAL.LePeso() sempre retorna -1, pois está faltando o Result na condicional (fpModeloStr = 'Generica'). Código atual: unit ACBrBALClass; function TACBrBALClass.LePeso(MillisecTimeOut: Integer): Double; begin Result := -1; if (fpModeloStr = 'Generica') then begin AguardarRespostaPeso(MillisecTimeOut, True); Exit; end; SolicitarPeso; Sleep(200); LeSerial(MillisecTimeOut); Result := fpUltimoPesoLido; end; Deveria ser: function TACBrBALClass.LePeso(MillisecTimeOut: Integer): Double; begin Result := -1;
  4. Acho improvável que vai funcionar dessa forma, pois essa balança requer um envio prévio do comando #05 solicitando o peso. A unit ACBrBALToledo2090.pas faz o mesmo sobreescrevendo o método SolicitarPeso()
  5. 1. Creio que a unit deveria ser adicionada tb em ACBr_Serial.dpk? 2. A Balança AFTS foi implementada 1 ano depois da minha postagem por intermédio de outra publicação de outro usuário: 3. Adicionei no https://github.com/dipold/ACBr/tree/Novas_Balancas o suporte que temos as balanças Toledo IP W9091 WMSI3360 WMSI6260 WOHaus Elas foram implementadas por um antigo funcionário e não passaram por revisão de código interno e utilizam as dll´s fornecidas pelo fabricante. Na string da porta COM passa-se parâmetro no formato: Format('DLL|%s|%s|True', [EnderecoIP, Canal]); //Canal p
  6. Você deve ter olhado a branch master que é igual ao repositório svn do ACBr original sem modificações. Na branch Novas_Balancas estão presentes o ACBr original + as alterações das novas balanças: https://github.com/dipold/ACBr/blob/Novas_Balancas/Fontes/ACBrSerial/ACBrBALToledo9091_8530_8540.pas Quanto a comunicação ser USB, vc vai ter que instalar um programa que cria uma porta COM fake que conversa com a USB. Entra em contato com a Toledo, eles mesmo tem um instalador que configura isso. Não sei dar maiores detalhes porque não é uma coisa que mexo no dia a dia.. fiz lá em 2015
  7. Quem não está conseguindo fazer o merge da minha unit postada aqui com os fontes originais do ACBr, fiz um fork do ACBr no meu github onde pretendo mantê-lo atualizado: https://github.com/dipold/ACBr Criei um branch com as modificações necessárias para a balança nele: https://github.com/dipold/ACBr/tree/Novas_Balancas O download do repositório completo com as alterações pode ser feito pelo link: https://github.com/dipold/ACBr/archive/Novas_Balancas.zip Mais a frente vou adicionando nesse repositório outras contribuições que desenvolvemos aqui internamente.
  8. Ficou alguma dúvida com relação ao meu post? Caso não tenha ficado claro, um teste simples pra entender que há perda de dados ao fazer cast para PAnsiChar entre String e AnsiString: program Project1; {$APPTYPE CONSOLE} var AXMLAnsi: AnsiString; AXMLStr: String; begin AXMLAnsi := '<?xml version="1.0" encoding="UTF-8"?>'; AXMLStr := '<?xml version="1.0" encoding="UTF-8"?>'; WriteLn(PAnsiChar(AXMLAnsi)); //Imprime: <?xml version="1.0" encoding="UTF-8"?> WriteLn(PAnsiChar(AXMLStr)); //Imprime: < ReadLn; end.
  9. Problema: No método TDFeSSLXmlSignXmlSec.VerificarAssinatura(), a variável AXml foi alterada de AnsiString para String nesse commit, e quando executa a linha: xmlParseDoc(PAnsiChar(AXml)); a conversão para PAnsiChar corrompe seu valor e o método xmlParseDoc() recebe como argumento um valor corrompido/lixo; Solução: Retornar a declaração para AnsiString; Também sugiro alterar o seguinte trecho de código para mensagem ser mais específica do que erro genérico "Erro: Falha ao interpretar o XML "xmlParseDoc"": doc := xmlParseDoc(PAnsiChar(AXml)); if ((doc = ni
  10. Também tive esse problema. Aparentemente certificados mais novos estão vindo com um nível de criptografia não suportado com as configurações: ACBrNFe.Configuracoes.Geral.SSLLib := libWinCrypt; ACBrNFe.SSL.SSLXmlSignLib := xsMsXml; Se alterar SSLXmlSignLib para xsXmlSec funciona. Minha dúvida é se essa combinação (WinCrypt + XmlSec) ainda possui os problemas relatados no post do Bye Bye CAPICOM. Também há possibilidade de você re-exportar esse certificado usando um Windows mais antigo para que o ele salve o certificado com nível de criptografia menor, que o colega acima ci
  11. Essa flag cheira a POG... sem falar que ela pode impedir que o OnBeforePrint() do relatório seja executado diante de um Refresh() (Two Pass por exemplo). O OnBeforePrint() é chamado em um laço interno no momento de "pintar" cada componente visível do relatório, portanto, usando o "if correto", ele será executado apenas uma vez. A solução muito mais eficiente, portanto, é verificar se o componente do relatório pintado da vez é o que queremos processar: Diff: https://gist.github.com/dipold/1bf92b32c326b415449096c08f8d4c11/revisions?diff=split Arquivo cru modificado:
  12. Tenho recebido com frequência esse tipo de dúvida e nem sempre tenho tempo para respondê-las, vou tentar explicar aqui, mas infelizmente, também estou de mãos atadas pois o código da balança ainda não foi aceito pelos moderadores, e como não se usa Github no projeto, não tem como eu disponibilizar um branch funcional para as pessoas baixarem e testarem.. então negócio é tudo manual e no braço! Vamos lá: Considerando que você já fez o download dos fontes atuais e instalou o componente ACBr_Serial.dpk no seu Delphi: 1. Abra e compile o projeto ACBR\Exemplos\ACBrSerial\ACBrBAL\Delphi\Ba
  13. Como assim, "não dá pra fazer o que tu quer ali"? O que havia de errado na minha contribuição? Com relação à crítica ao GIT, e de tudo que andei lendo nesse fórum à respeito, é visível que os que criticam desconhecem profundamente como o GIT funcionaria e quão mais simples e poderoso seria que o SVN + fórum atual. Eu trabalhei anos com VCS e SVN e grande sacada do GIT não é o GIT em si, mas o GITHUB.COM. Para efeitos didáticos, vou relacionar aqui como "seria" o ACBr no github.com: Todo repositório ficaria em um branch chamado master, e apenas Daniel Simões poderia alterá-lo e
  14. Eu já havia escrito código para essa balança há 1 ano atrás (embora meu código estava considerando apenas a parte inteira da leitura, sem decimais), juntamente com a balança rodoviária Toledo... Infelizmente minhas contribuições ficaram no esquecimento... Sistema de Controle de Versão por Fórum não tem como funcionar direito...
  15. Desconheço outro emulador (talvez exista). Fiz a codificação comunicando diretamente com a balança no próprio cliente. Você pode alterar o fonte do emulador da ACBr para considerar esse modelo se desejar.
×
×
  • Create New...