Ir para conteúdo
  • Cadastre-se

dev botao

Bematech MP-2500 Th não imprime o QrCode


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

Recommended Posts

  • Membros

Olá amigos. bom dia.

Tenho uma MP-2500 TH ja com a firmware atualizada na versão 1.20, uso o componente EscPos/PosPrinter e o QrCode não é impresso. Já tentei vários procedimentos explicados aqui no fórum mas não adiantou. Segue em anexo a imagem de um cupom emitido recentemente.

Alguem conseguiu resolver ?

Obrigado.

20150802_110047.jpg

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • Membros

Verifique com o fabricante, se esse modelo (MP-2500), suporta a impressão de QRCode, usando o protocolo EscBema

Veja a imagem em anexo Daniel. Eu fiz a atualização do firmware e conforme os parâmetros, ela deveria imprimir o qrcode.

20150804_134233.jpg

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde, tenho um cliente com uma MP-2500TH e imprimi o QR Code.

O que percebi eu percebi é que o código utilizado para impressão do QR Code que está no trunk 2 não funciona na MP-2500TH, mas funciona na MP-4200TH (muito estranho).

Na unit ACBrEscBematech.pas, o comando para impressão do QRCode está da seguinte forma:

Result := GS  + 'kQ' + // Codigo QRCode
              AnsiChr(ErrorLevel) +       // N1 Error correction level 0 - L, 1 - M, 2 - Q, 3 - H
              AnsiChr(12) +               // N2 - MSB; 0 = default = 4
              AnsiChr(LarguraModulo) +    // N3 - Version QRCode ???
              AnsiChr(1) +                // N4, Encoding modes: 0 – Numeric only, 1 – Alphanumeric, 2 – Binary (8 bits), 3 – Kanji,
              AnsiChr(cTam1) + AnsiChr(cTam2) +  // N5 e N6
              ACodigo;

Tenta deixar da seguinte forma:

Result := GS  + 'kQ' + // Codigo QRCode
              AnsiChr(ErrorLevel) +       // N1 Error correction level 0 - L, 1 - M, 2 - Q, 3 - H
              AnsiChr(0) +               // N2 - MSB; 0 = default = 4
              AnsiChr(LarguraModulo) +    // N3 - Version QRCode ???
              AnsiChr(1) +                // N4, Encoding modes: 0 – Numeric only, 1 – Alphanumeric, 2 – Binary (8 bits), 3 – Kanji,
              AnsiChr(cTam1) + AnsiChr(cTam2) +  // N5 e N6
              ACodigo;

 

Não sei se dessa forma está 100%, mas o QR Code é impresso.

Foi o que eu percebi, mas acho muito estranho a MP-4200TH imprimir corretamente o primeiro código e a MP-2500TH não imprimir.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Poderia fazer um teste com a função nativa da MP2032.DLL talvez seja alguma problema com o componente.

function ImprimeCodigoQRCODE( errorCorrectionLevel: integer; moduleSize: integer; codeType: integer; QRCodeVersion: integer; encodingModes: integer; codeQr: string ): integer; stdcall; far; external 'MP2032.DLL';

errorCorrectionLevel := 0;
moduleSize := 6;
codeType := 0;
QRCodeVersion := 10;
encodingModes := 1;
iRetorno:= ImprimeCodigoQRCODE( errorCorrectionLevel, moduleSize, codeType, QRCodeVersion, encodingModes, 'Teste');

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Se a DLL usar impressão em modo gráfico (e não em EscPos) o teste não será equivalente...

Vou aplicar as modificações propostas pelo Ronaldo no SVN...

Eu não tenho essas impressoras então fica complicado para saber se está funcionando adequadamente...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Fiz os testes nas duas impressoras, e em ambas está saindo o código de barras, fiz a leitura pelo aplicativo da SEFAZ e funcionou corretamente.

Segue código atualizado:

Result := GS  + 'kQ' + // Codigo QRCode
              AnsiChr(ErrorLevel) +       // N1 Error correction level 0 - L, 1 - M, 2 - Q, 3 - H
              AnsiChr(10) +               // N2 - MSB; 0 = default = 4
              AnsiChr(LarguraModulo) +    // N3 - Version QRCode ???
              AnsiChr(1) +                // N4, Encoding modes: 0 – Numeric only, 1 – Alphanumeric, 2 – Binary (8 bits), 3 – Kanji,
              AnsiChr(cTam1) + AnsiChr(cTam2) +  // N5 e N6
              ACodigo;

Sérgio, faz o teste na sua MP-2500TH também para deixarmos 100%.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Pessoal, eu estava com o mesmo problema, e mesmo após atualização continuava a dar a mesma mensagem de assinatura QRCode não é válida. Só consegui resolver a alterando o código abaixo:

    cTam1 := Length(ACodigo) mod 256;
    cTam2 := Length(ACodigo) div 256;

antes

    cTam1 := Length(ACodigo) mod 255;
    cTam2 := Length(ACodigo) div 255;

Ai sim consegui consultar sem erro. Ao ler o qrcode que consegui validar, no meu exemplo, está sendo gerado com 410 bytes, contra 411 bytes no que dá a mensagem de inválido, parece ter um espaço em branco a mais no final do código. Os testes foram feitos em um sat bematech para desenvolvedor e impressora bematech mp-4200 TH.

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Agora sim tudo faz sentido...   :)

Quando escrevi a classe da ACBrEscBematech, copiei métodos a Unit do antigo DANFE NFCe do Trunk... e lembro que achei muito estranho o calculo usar o valor 255 e não 256...

Na verdade o ACBr já possui um método que faz essa conta... ele está na ACBrUtil, e já é usado na Classe da ACBrEscEpson...

{-----------------------------------------------------------------------------
  Converte um "AInteger" em uma String binária codificada como Little Endian,
  no tamanho máximo de "BytesStr"
  Exemplos: IntToLEStr( 106 ) = chr(106) + chr(0)
 ---------------------------------------------------------------------------- }
function IntToLEStr(AInteger: Integer; BytesStr: Integer): AnsiString;

Apliquei modificações no SVN para usar esse método

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Daniel, essa atualização aplicada no SVN já esta implementada no AcbrMonitorPlus 1.8.04 ou ainda não esta disponível. Pois imprimi tanto pelo extrato CF-e como diretamente pelo ESCPOS e ao ler pelo leitor da SEFAZ esta dando QRCODE inválido

Obrigado

.

A impressora pe uma Bematech 4200 th com firmware atualizado

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Acredito que ainda não está nessa versão... O Isaque deve ser estar prestes a subir uma versão nova...

Vou modificar o script de instalação, para que ele colete todos os ACBr-ChangeLog.txt e instale em uma subpastaa...

Isso ajudará a saber o que cada versão contempla 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

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