Ir para conteúdo
  • Cadastre-se

dev botao

Implementar Suporte A Bematech Mp-4200 Th No Acbrnfedanfeescpos


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

Recommended Posts

Olá amigos.

 

Estou iniciando meu desenvolvimento em nfce. Já gerei o xml, mas estou apanhando na impressão>

 

Tenho uma mp 4200 para testes, e após instalar(via software da bematech), acionei: AcbrNfe1.imprimir,  e inicialmente não fez nada.

Pesquisando na internet, encontrei a necessidade de informar a porta, velocidade, e ativar.

Funcionou, a bematech cuspiu um cupom.

Mas continuando no desenvolvimento, ao inserir o token do certificado digital, já deu erro: impossível comunicar com impressora.

Então estou parado. Preciso da ajuda dos colegas, para utilizar esta impressora, como ativar.

Hoje ao ligar, o computador reconheceu a impressora e novamente pediu para instalar(que confusão isto) .

Pergunto: qual o passo-a-passo para usar esta ou outra impressora via AcbrNfeDanfeEscpos?

Já pesquisei outros posts mas não foi suficiente.

Marcio

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Eu tenho uma 4200 aqui de testes e está ok o funcionamento, veja o demo do ACBrDANFeEScPOS dentro da pasta "ACBr\Exemplos\ACBrNFe2\Demo ACBrNFeDANFeEscPos\Delphi" ele e voltado somente para impressão com ele está funcionando 100% e sem problemas.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Régys, obrigado pela atenção.

 

A resposta para minha dúvida estava no meu próprio computador, como você me relatou.

Muitas vezes, ficamos procurando respostas, e a resposta está na nossa frente.

Quando não existia a web, ficávamos muitas vezes, dias e dias, com uma dúvida ou bloqueio criativo. 

E então, num certo momento, depois de ler e reler todo o algoritmo, ir diversas vezes ao banheiro ou tomar um copo d'água, e voilá: a resposta.

Não sei se você programou antes da existência da Web, mas era um sufoco.

Hoje não, se depararmos com uma dúvida, postamos num fórum ou pesquisamos via google. E tem sempre uma alma caridosa e generosa para

compartilhar sua sapiência com seus semelhantes amigos virtuais. Pessoas como você, Régys, cuja existência e disponibilidade, é o que tem de melhor na web.

Muito obrigado pela sua gentileza.

E para aproveitar um pouco mais do amigo, uma dúvida: o exemplo(demoacbrnfedanfeescpos) não roda no meu computador, ela abre e se mexer em qualquer controle, ele fecha. O que pode estar acontecendo? Utilizo Dephi 7.

Um abraço 

Marcio

 

E esqueci  de falar o que estava fazendo errado: não estava desativando device, então dava erro, bastou ativar e desativar no final da impressão. Uma sugestão: no exemplo do acbrnfedemo, colocar a impressão e configuração do acbrnfedanfeescpos

Editado por marcio-carneiro
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Marcio, é estranho ele fechar sozinho assim, aqui eu tenho D7, D2007, D2010, XE6 e XE7 e rodei em todos eles sem problemas, você tentou rodar debugando para ver se alguma mensagem silenciosa aparece?

 

Quanto ao demo do acbrnfedemo, eu preferi fazer um em separado (aquele lhe citei anteriormente) devido as particularidades do componente já que ele conecta a uma impressora serial, etc, etc.

 

Obs.: Sou do tempo das telinhas verde/laranja/preto  :D

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Boa tarde,

 

Estou utilizando a Bematech MP-4200-TH para emissão do DANFE NFC-E, preciso diminuir o espaçamento entre linhas da impressão e não consegui encontrar o comando correto.

Eu sei que para a impressora fiscal que utiliza a DLL BemaFI32 existe uma função responsável por isso  (Bematech_FI_EspacoEntreLinhas), porém, para a NÃO FISCAL não existe essa função e também não encontrei o comando responsável. Será que alguém tem uma ideia de qual comando ou a impressão não permite esse ajuste? 

 

A dll da não fiscal é mp2032.

 

Para Epson TM-T20 eu consegui fazer utilizando o comando <cespl>35</cespl>  e utilizando a função ImprimeTextoTag da dll InterfaceEpsonNF.dll

Editado por Rubens-JP
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • 2 meses depois ...

Pessoal, boa tarde, postei em outros topicos, mas vi que talvez aqui esteja a solucao.

Alguem ja fez imprimir na mp-2500? Independente se saiu qr code ou nao, mas em si, apenas imprimir?

Nao consigo na minha 2500 atualizada e desatualiza, nao imprimi nada.

Se alguem ja fez, posta umas dicas por favor.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • 3 meses depois ...
  • 8 meses depois ...
On 01/11/2014 at 10:11 AM, welkson said:

Pessoal,

 

A Bematech respondeu o e-mail e consegui resolver o problema.

 

Acredito que a solução ideal seria criar uma propriedade no componente TACBrNFeDANFeESCPOS para informar o padrão de QRCode deve ser impresso (já que no ESC/POS não tem um comando padronizado para imprimir QRCode, cada fabricante está fazendo do seu jeito).

 

Como não sou expert em criação de componentes, reutilizei uma propriedade do componente que na minha análise (rápida) não está sendo utilizado: Impressora

 

Se o campo estiver vazio, o componente vai considerar que a impressora ligada é uma Epson (set de comandos default), se o campo estiver preenchido com a string "Bematech" (acredito que seria mais interessante algum tipo de record: tQRCodeBematech, tQRCodeDaruma, etc.) o componente vai enviar o set de comandos do QRCode no padrão Bematech.

 

Na segunda-feira devo receber uma Daruma DR700 que compramos para NFCe, vou fazer os testes, e se necessitar de ajustes irei fazer e disponibilizar nesse mesmo tópico.

 

Para que a impressão seja feita corretamente é necessário configurar o set de comandos "ESC/POS" via aplicativo da Bematech (Bematech User Software).


procedure TACBrNFeDANFeESCPOS.GerarRodape(CortaPapel: Boolean = True; Cancelamento: Boolean = False);
var
  qrcode : string;
  cCaracter:AnsiString;
  i, cTam1, cTam2:Integer;
begin
  FBuffer.Add(cCmdFonteNormal+'------------------------------------------------');
  FLinhaCmd := cCmdAlinhadoCentro+'Consulta via leitor de QR Code';
  FBuffer.Add(FLinhaCmd);
  FBuffer.Add(' ');




  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);


  //bematech
  if (FImpressora = 'Bematech') then
     begin
        //formato Bematech (http://partners.bematech.com.br/2014/09/imprimindo-qrcode-na-impressora-mp-4200-th/)

        //OBS: para que o QRCode seja impresso na Bematech é necessário instalar o firmware 1.6 ou superior (http://partners.bematech.com.br/2013/03/edicao-139-mp-4200-th-com-qr-code/)
        //     essa implementação utiliza o set de comandos ESC/POS. Para habilitar na impressora utilize o aplicativo "Bematech User Software", e na aba "Configurações Adicionais" selecione
        //     o tipo de comando "Esc/POS"

        for i := 1 to length(qrcode) do
            begin
               cCaracter := cCaracter + Chr(Ord(qrcode[i]));
            end;

        if (length(qrcode) > 255) then
          begin
             cTam1 := length(qrcode) mod 255;
             cTam2 := length(qrcode) div 255;
          end
        else
          begin
             cTam1 := length(qrcode);
             cTam2 := 0;
          end;

        FLinhaCmd :=  #27 + #97 + #1 +             //esse código faz a centralização
                      #29 + #107 + #81 +           //esse é o do qr code
                      #3 + #8 +                    //aqui é o tamanho do QRCode
                      #8 + #1 +                    //dimensão (8)
                      Chr(cTam1) +                 //resto da divisão correspondente ao tamanho do texto / 255
                      Chr(cTam2) +                 //divisão correspondente ao tamanho do texto
                      cCaracter;                   //aqui começa o texto

     end
     
  else if (FImpressora = 'Daruma') then
     begin

     end

  else //default (Epson ESC/POS)
     begin
        //formato Epson ESC/POS
        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';
     end;


  FBuffer.Add(FLinhaCmd);

  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add(cCmdFontePequena+('Protocolo de Autorização:'+Trim(FpNFe.procNFe.nProt)+' '+DFeUtil.SeSenao(FpNFe.procNFe.dhRecbto<>0,DateTimeToStr(FpNFe.procNFe.dhRecbto),''))+cCmdFonteNormal);
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');
  FBuffer.Add('');

  if CortaPapel then
     FBuffer.Add(cCmdCortaPapel);
end;

Acredito que o componente está ignorando algumas propriedades, como NumCopias, pois sempre sai 2 vias mesmo quando configurado para 1 (tentei com ViaConsumidor False mas o mesmo comportamento ocorre). Vou analisar com mais calma o código pra ver se acho onde está enviando essa segunda cópia.

Amigo, salvou meu emprego :D, Parabéns pelo código e por compartilhar! funcionou perfeito a impressão aqui, estava com o mesmo problema de 255 caracteres. Muito Obrigado!!!!

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Moderadores
33 minutos atrás, kennedygm3 disse:

boa noite amigos c estou com o seguinte problema quando imprimo a NFCe na impressora nao fiscal Bematech MP 4200 TH, sai normal mais quando vai imprimir o comprovante do cartão as letras sai grande e a impressao muito lenta aguem pode mim ajudar desde ja agradeço

Favor não postar o mesmo problema em vários tópicos, poste uma vez apenas.

Veja este tópico se é o mesmo caso:

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2353 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.