Ir para conteúdo
  • Cadastre-se

wrmedeiros

Membros
  • Total de ítens

    225
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por wrmedeiros

  1. Daniel,

     

    Tira Bematech dessa sua lista, com a versão atual do componente ESC/POS o QRCode não é impresso (o cupom em si é impresso certinho, mas a impressora precisa está configurada como "ECC/BEMA". Se ativar ESC/POS a impressora usa uma fonte maior que só suporta 42 caracteres por linha).

     

    No momento estou testando o componente ESC/POS para imprimir o NFCe com a impressora em ESC/BEMA e fazendo os ajustes para imprimir o QRCode. O problema ocorre porque só consigo imprimir URL's com no máximo 255 caracteres... os caracteres excedentes são jogados como "texto" abaixo do QRCode.

     

    Criei um tópico sobre isso aqui:

     

    Criei um tópico no fórum "Partner" da Bematech, mas sem respostas.

     

    Estou quase comprando uma Daruma, mas pelo que vi no ESC/POS, o QRCode só é impresso corretamente na Epson.

  2. O componente ESCPOS funciona com impressoras Daruma?

     

    Com Bematech sei que não funciona, e estou a dias tentando contato com a Bematech para resolver um problema na impressão do QRCode via ESC/POS (assim que terminar mando o código atualizado do componente).

     

    O problema que estou me referindo é esse:

     

    Só consigo imprimir os 255 primeiros caracteres.

     

    Estou vendo também a compra de uma Daruma, mas só vou comprar se conseguir imprimir sem DLL.

  3. Nilton, bom dia!

     

    No demo da Bematech a URL é passada apartir de um EditText, ou seja, nem tem essa limitação de 255 caracteres de uma string comum.

     

    Antes quando eu estava testando usando variáveis eu percebi essa limitação e fiz como você mencionou, concatenei, mas dessa vez o problema é nesse parâmetro que informa quantos caracteres tem na URL.

     

    Tanto que a URL é codificada no QRCode até a 255 posição, e o resto é "impresso" como observação logo abaixo do QRCode, ou seja, a String foi enviada por completo, no entanto o Chr só considerou 255.

     

    Cheguei ao ponto de remover o Chr e colocar somente o #347, e mesmo assim a impressora "quebra" o QRCode.

     

    Tem um aplicativo da Bematech onde é feito alguns ajustes na impressora (atualização de firmware, definição de set de comandos: ESC/POS, ESC/BEMA, etc.), e nele tem um local onde é possível imprimir um QRCode de exemplo, lá eu colei essa URL com 347 caracteres e imprimiu certinho, mas os fontes desse APP não são disponibiizados.

     

    Para descobrir como eles fizeram instalei um "sniffer" de porta serial e capturei o tráfego que esse aplicativo envia, no entanto observei que eles usam ESC/BEMA em vez de ESC/POS para imprimir o QRCode, e no ESC/BEMA não é necessário informar o tamanho da URL.

     

    Alguém tem algum exemplo de como imprimir um QRCode usando ESC/BEMA?

  4. Pessoal, bom dia!

     

    Encontrei um demo no site da Bematech que mostra como imprimir o QRCode no ESC/POS:

     

    http://partners.bematech.com.br/bemacast/wp-content/uploads/downloads/2014/09/qrcode.rar

     

    Nos meus testes só consigo imprimir URL's com no máximo 255 caracteres, no entanto as URL's da NFCe costumam passar de 350 caracteres como o exemplo abaixo que peguei do manual do NFCe:

     

    http://www.nfe.se.gov.br/portal/consultarNFCe.jsp?chNFe=43120910585504000174650010000000541123456781&nVersao=100&tpAmb=1&cDest=43708379006485&dhEmi=323031322d30392d32375431363a32303a33342d30333a3030&vNF=1000.00&vICMS=180.00&digVal=37327151612b623074616f514f3966414a7766646c5875715176383d&cIdToken=000001&cHashQRCode=80f5d4a1e4b12bc97aae0e971a61bff73270fd81

     

    Aparentemente o CHR não permite um inteiro maior que 255:

    
                  chr(length(txtMensagem.Text)) +  // tamanho de caracteres correspondente ao texto
    
    

    Alguém sabe como contornar isso?

     

    Já tentei contato com a Bematech, mas não obtive resposta quanto ao caso.

  5. Já consegui imprimir o QRCode.

     

     

    ACBrNFeDANFeESCPOS.pas:

      //formato Bematech (http://partners.bematech.com.br/2014/09/imprimindo-qrcode-na-impressora-mp-4200-th/)
      FLinhaCmd :=  #27 + #97 + #1 +      // esse código faz a centralização
                    #29 + #107 + #81 +      // esse é o do qr code
                    #2 + #12 + #8 + #1 +    // aqui é o tamanho
                    Chr(Length(qrcode)) +   // tamanho de caracteres correspondente ao texto
                    #0 +
                    qrcode;
    
    

    Fazendo dessa forma acabo quebrando a implementação anterior (Epson), mas para testes por enquanto vou deixar assim.

     

    Com essa implementação o QRCode é impresso, mas como a string é muito grande (mais de 300 caracteres), o sistema só consegue enviar uma parte da string para o QRCode (algo em torno de 120 caracteres), e os demais aparecem abaixo do qrcode em formato de texto. Acredito que o problema está no Chr(Length(qrcode)), só não faço ideia de como resolver.

     

    Com URL's menores que 120 caracteres funciona perfeitamente.

  6. Senhores, boa tarde!

     

    Configurei o modo ESC/POS na Bematech MP-4200, e estou conseguindo imprimir o DANFeNFCe pela impressora não fiscal usando o ACBrNFeDANFeESCPOS.

     

    Em um post do André observei que o componente só foi testado com Epson e DASCOM [1], e gostaria de contribuir implementando as alterações para a Bematech (MP-4200).

     

    Analisando o código em ACBrNFeDANFeESCPOS.pas vejo que não existe uma propriedade para informar que tipo de impressora está utilizando, e pelo que observo, cada impressora tem seu padrão de comandos para imprimir o QRCode (na Bematech os demais ESC's funcionaram perfeitamente, negrito, condensado, etc. exceto o QRCode, que imprimiu a "string").

     

    Acredito que teremos que criar uma propriedade onde deve ser informado qual tipo de impressora está sendo utiilzada (Epson, Daruma, Bematech, etc., onde Epson será o default, para não quebrar o código de quem já está utilizando). O que acham?

     

    Na classe ACBrNFeDANFEClass.pas tem uma propriedade chamada "Impressora", qual a utilidade? Poderíamos utilizar essa propriedade?

     

    Por enquanto vou continuar lendo o manual e fazendo testes no Delphi para impressão do QRCode sem DLL.

     

    [1] 

  7. NFCe, mas nem comecei ainda a parte de imprimir o cupom.

    Estava só fazendo testes com a impressora que compramos a poucos dias. Vi sobre o DANFeESCPOS e estava na minha lista de coisas para testes. De qualquer forma está pronto né? bem melhor que bater cabeça com esses comandos rsrs;

     

    Quanto a impressora, ela imprime 48 colunas perfeitamente quando mudo de ESC/POS para ESC/BEMA:

    https://www.dropbox.com/s/w0nh33ktqkv38yd/Bematech.png?dl=0

     

    O ideal seria que em ESC/POS a fonte ficasse do mesmo tamanho, mas enfim, o importante é que funcionou.

     

    Obrigado pela dica do ACBrNFeDANFeESCPOS, vou testá-lo mais tarde.

     

    Abraços,

  8. Fiz uma foto do cupom usando ecfNaoFiscal pelo Demo do ACBr para vocês verem:

    https://drive.google.com/file/d/0B4WiOkkQli4tRkxDV21zZnozSDg/view?usp=sharing

     

    Quando a quantidade de caracteres chega a 42 por linha a impressora automaticamente joga para a próxima.

     

    Posso via ESC/POS habilitar o modo condensado (apesar que vai caber BEM MAIS que 48 caracteres por linha), mas terei que alterar o componente inteiro (e vai ficar estranho, porque a fonte padrão é grande demais, e a condensada pequena demais rsrs).

  9. Fala Nilton, beleza?

     

    Aceita sim, e estou usando como ESC/POS.

     

    O problema é que a fonte é grande, e acaba estourando o limite da linha.

     

    Por padrão o ecfNaoFiscal do ACBr considera que a impressora não-fiscal utiliza 48 caracteres, como por padrão a Bematech usa 42, sai tudo quebrado.

     

    Já tentei algumas coisas na configuração do driver (mudar fonte, etc.), mas não obtive êxito.

     

    Vou está viajando próxima semana, mas assim que voltar entro em contato com o suporte da Bematech.

  10. Pois é Dércio, gosto não se discute mesmo.

     

    Acho louvável a iniciativa de empresas como Daruma em criar DLL's para facilitar a implementação de NFCe, etc., mas gosto mais ainda de ter acesso ao código-fonte, de em erros "bizarros" ter como analisar de forma mais aprofundada o problema.

     

    Tempos atrás tive uns erros graves na emissão de NFCe (uso o UNINFe e o mesmo estava fechado "sozinho"). O pessoal da Unimake foi bem prestativo no suporte, mas o que me salvou mesmo foi ter acesso ao código-fonte e poder depurar direto pelo Visual Studio até resolver o problema.

     

    Nesses quase 13 anos de caminhada com automação sofri um bocado com essas DLL's de fabricantes de ECF, e sinceramente, se existe uma opção de não utilizá-las (indiferente de ser não-fiscal ou qualquer outra solução), prefiro ter mais trabalho no início, mas ter controle sobre o código.

     

    Sei que é impossível ter controle sobre tudo (tem o SO, tem drivers, tem hardware, etc.), mas quanto mais o controle está na sua mão, melhor.

     

    Voltando ao caso Bematech, analisando o manual do equipamento é possível encontrar os códigos para ativar o modo condensado, mas a questão inicial é porque o fabricante optou por 42 colunas em vez de 48 no modo "default". Mesmo que seja necessário utilizar a ferramenta de configuração da impressora para habilitar 48 colunas, é mais fácil que reescrever todos os módulos que estão preparados para 48 colunas (no manual ensina a ativar o modo condensado na hora de imprimir a linha, não encontrei uma forma de ativar o modo condesando de forma "defintiiva", ou seja, a cada linha impressa, antes tem que vir o código ESC para ativar o modo condensado).

     

    Imagine a situação, seu cliente no PDV 1 tem uma impressora Epson que acredito que imprime 48 colunas por padrão... no 2 ele tem uma Daruma, que aparentemente também imprime 48 colunas por padrão, aí no 3 você tem uma Bematech, e vai ter que configurar seu sistema de forma diferente para que a cada linha o modo condensado seja ativado. Sem noção isso!

  11. Pois é "tchuck", estou com esse problema.

     

    Pelo que vi no manual tem como habilitar o modo condensado, mas tem que ser enviado o código ESC a cada linha. O ideal era a impressora por padrão não usar aquela fonte "enorme" e manter o padrão que todas as impressoras não fiscais seguem (48 colunas).

     

    Ontem fiz vários testes com o modelo "ecfNaoFiscal" do demo do ACBrECF, e sai tudo quebrado devido esse problema.

     

    Fiz uma pergunta no fórum da Bematech e no AutomacaoTotal, vamos ver se respondem.

  12. Nilton,

     

    Mas via FastReport vai funcionar? essa impressora é só modo texto, acredito que esses geradores de relatório (Fast, QR, Fortes, etc.) não funcionem com elas.

     

    Já usei essas impressoras para outros fins (recibo de troca, extrato de fidelização, etc.), geralmente optava por escrever direto na porta COM usando WriteLn mesmo, mas nesse caso como tem o QRCode, tem que saber quais códigos elas utilizam (ESC).

     

    Uma pena que o dono da empresa já tinha comprado uma impressora Bematech, não terei como testar esse zip que passei acima com a Daruma.

  13. Encontrei algo que pode ajudar:

    http://www.desenvolvedoresdaruma.com.br/home/downloads/Site_2011/Manuais/Daruma_DR700_DR600_DR600SENHA.zip

     

    Página 7 do arquivo "Daruma_DR600-DR700.pdf":

    Imprime QR Code*
    [ESC] <129> <–Size><+Size> <Width> <Ecc> <D001> <D002> . . . <Dnnn> 
    Size inclui os 2 bytes de controle
    Size ≤ 402
    nnn = Size – 2
    Largura do módulo (Width): 0, 4 ≤ Width ≤ 7 ( =0 para default = 5)
    Redundância (ECC): 0, M, Q, H ( =0 para cálculo automático)
    * Apenas para V.02.50.00 ou superior.

    Vou comprar uma e faço os ajustes no componente se for necessário.

  14. No ACBrNFeDANFeESCPOS.pas tem geração de QRCode, basta alguém que tenha a Daruma testar:
     

    qrcode := NotaUtil.GetURLQRCode( FpNFe.ide.cUF, FpNFe.ide.tpAmb,
                                       FpNFe.infNFe.ID,
                                       DFeUtil.SeSenao(FpNFe.Dest.idEstrangeiro <> '',FpNFe.Dest.idEstrangeiro, FpNFe.Dest.CNPJCPF),
                                       FpNFe.ide.dEmi,
                                       FpNFe.Total.ICMSTot.vNF, FpNFe.Total.ICMSTot.vICMS,
                                       FpNFe.signature.DigestValue ,
                                       TACBrNFe( ACBrNFe ).Configuracoes.Geral.IdToken,
                                       TACBrNFe( ACBrNFe ).Configuracoes.Geral.Token);
     
      FLinhaCmd := chr(29)+'(k'+chr(4)+chr(0)+'1A2'+chr(0)+
                   chr(29)+'(k'+chr(3)+chr(0)+'1C'+chr(4)+
                   chr(29)+'(k'+chr(3)+chr(0)+'1E0'+
                   chr(29)+'(k'+Int2TB(length(qrcode)+3)+'1P0'+qrcode+
                   chr(29)+'(k'+chr(3)+chr(0)+'1Q0';
      FBuffer.Add(FLinhaCmd);

    Enviei um e-mail para Daruma perguntando se a impressora deles suporta ESC/POS.

     

    No fórum encontrei alguns tópicos sobre o assunto, aparentemente só funciona Epson e Bematech (essa última só após atualizar o firmware da impressora).

  15. Conseguiram alguma resposta junto ao SEFAZ?

     

    Realmente a ideia de usar séries diferentes para cada PDV me parece a melhor solução.

     

    Fiquei preocupado com a questão das filiais, pois lá também vai existir um PDV 1, e com isso será utilizado a série 001, mas como é informado o CNPJ do emitente na hora de gerar, acredito que não teremos problemas (apesar de ser utilizado o mesmo certificado tanto na matriz quanto nas filiais).

  16. Show Nilton, muito obrigado, deu certo:

    https://www.dropbox.com/s/8doerx7e66xt5sh/ACBr_NFCe4.png?dl=0

     

    O estranho é que no site do SEFAZ diz que essa forma de configurar o token foi descontinuada, e que agora deve ser informado “0123456789” para o CSC e o identificador “000001”.

     

    A hora do SEFAZ-AM está 1h atrasada (alguma coisa de fuso ,acredito). Tive que fazer um pequeno ajuste no GerarNFCe:

    var
       D, M, Y, H, MM, S, MS:Word;
       cDataHora:TDateTime;
    begin
       DecodeDateTime(Now, Y, M, D, H, MM, S, MS);
       H := H - 1;
       cDataHora := EncodeDateTime( Y, M, D, H, MM, S, MS);
    
       ...
       Ide.dEmi      := cDataHora;
     
  17. Nilton,

     

    Testei com as 3 versões, não consigo.

     

    Até mesmo um "Status do Serviço" falha, veja:

    https://www.dropbox.com/s/gu7eomij68rnp7j/ACBr_NFCe1.png?dl=0

     

    Configuração da versão:

    https://www.dropbox.com/s/4b5qsouulm70vfg/ACBr_NFCe2.png?dl=0

     

    Acredito que pode ser algo no cadastro (algum dado do Emitente que não está sendo aceito no SEFAZ AM).

     

    Régys, você poderia mandar um print da sua tela de cadastro de emitente do ACBrNFe2Demo? (troco apenas o CNPJ para ficar igual ao do meu certificado e envio para ver se vai ser aceito). Se for, testo campo a campo até descobrir o motivo da negação.

     

    Conferi o certificado, está válido. Ontem atualizei a cadeia de certificados, etc. 

     

    O engraçado é que via UniNFE eu testo o "Status do serviço" em Homologação e recebo o aviso de "Erro não catalogado". Em seguida mudo para "Produção", e o UniNFE mostra "Serviço em Operação".

  18. Antes de criar o tópico fiz várias buscas no fórum, e a recomendação é entrar em contato com o SEFAZ já que a mensagem é genérica (com certeza não teremos resposta no fim de semana rsrs).

     

    O tópico em questão é esse (espero que os moderadores não reclamem de duplicidade, pois no tópico fala sobre MT e não AM):

     

    Li em algum lugar recomendando aos estados que quando for retornado o erro 999 (não catalogado), o campo xMotivo deveria exibir o exception (CEP inválido, IE inválida, etc.), mas isso não está ocorrendo no AM.

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