Jump to content

chamada diadoacbr

Assista tectoy.png

Bematech MP-2500 Th não imprime o QrCode


Sérgio Assunção
  • Este tópico foi criado há 2511 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

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 to comment
Share on other sites

  • Membros Pro

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 to comment
Share on other sites

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.

 

  • Like 1
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

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%.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

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 to comment
Share on other 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

  • Like 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.