
wrmedeiros
-
Total de ítens
225 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por wrmedeiros
-
-
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.
-
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?
-
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:
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.
-
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.
-
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]
-
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,
-
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).
-
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.
-
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!
-
Aguardar a resposta da Bematech, mas já avisei aos clientes para não comprarem nenhum modelo antes de falar conosco.
-
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.
-
Dei uma olhada rápida no manual da Diebold:
http://www.diebold.com.br/mecaf/drivers/Manual%20do%20Firmware%20I4X5101PD5XX-Rev04.pdf
Aparentemente não suporta QRCode. Acredito que quando você manda pelo driver ele imprime como bitmap (talvez seja esse o motivo da lentidão).
-
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.
-
Encontrei algo que pode ajudar:
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.
-
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).
-
Estou pensando em comprar impressora Daruma para fazer a impressão do NFCe, mas não gostaria de usar DLL (depois de tanto trabalho para matar as malditas DLL's das ECF's, não tem sentido continuar usando as mesmas para imprimir em modo texto).
Deve ter alguma forma de imprimir o QRCode sem ter que usar a DLL.
-
Perfeito Ítalo.
Vou implementar dessa forma.
-
-
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).
-
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;
-
Acredito ser algo no webservice do ambiente de homologação.
Troquei o ambiente para "Produção" (meu CNPJ não é do AM, na pior hipótese receberia um aviso de CNPJ inválido, e foi o que aconteceu):
https://www.dropbox.com/s/vvyksbdnx4hi6do/ACBr_NFCe3.png?dl=0
Alguém HOJE está conseguindo emitir via SEFAZ-AM no ambiente de homologação usando o demo do ACBr?
-
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".
-
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.
-
Acredito que é algo no SEFAZ mesmo.
Utilizei o UniNFE para testar o SEFAZ-AM e tenho o mesmo retorno.
Vejam:
https://www.dropbox.com/s/hm7764xsnutfees/UniNFE_Erro_AM.png?dl=0
Gerar Qr Code
em Dúvidas Gerais sobre o ACBr
Postado
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.