Ir para conteúdo
  • Cadastre-se

dev botao

Implementar Suporte A Bematech Mp-4200 Th No Acbrnfedanfeescpos


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

Recommended Posts

  • Moderadores

Acabei de atualizar e ficou show de bola, só um detalhe no topo em cima do nome da empresa está saindo (LOE.

Tente mudar a linha na linha o último caracter, para ver se os acentos saem corretamente: cCmdPagCod      := #27+'t'+#4

 

Use um dos valores abaixo:

 

If n is 2 (02h or 32h), CODEPAGE 850 is selected.
If n is 3 (03h or 33h), CODEPAGE 437 is selected.
If n is 4 (04h or 34h), CODEPAGE 860 is selected.
If n is 5 (05h or 35h), CODEPAGE 858 is selected.
If n is 6 (06h or 36h), CODEPAGE 866 is selected.
If n is 7 (07h or 37h), CODEPAGE 864 is selected.
If n is 8 (08h or 38h), UTF8 (Unicode) is selected.
If n is 9 (09h or 39h), Big-5E is selected.
If n is 10 (0Ah or 3Ah), JIS is selected.
If n is 11 (0Bh or 3Bh), SHIFT JIS is selected.
If n is 12 (0Ch or 3Ch), GB2312 is selected.
If n is 14 (0Eh or 3Eh), EUC-CN is selected.
If n is 21 (15h or 45h), CODEPAGE 862 is selected
 
E o código de barras e o QRCode foram impressos corretamente?
  • Curtir 1
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

 

Tente mudar a linha na linha o último caracter, para ver se os acentos saem corretamente: cCmdPagCod      := #27+'t'+#4

 

Use um dos valores abaixo:

 

If n is 2 (02h or 32h), CODEPAGE 850 is selected.
If n is 3 (03h or 33h), CODEPAGE 437 is selected.
If n is 4 (04h or 34h), CODEPAGE 860 is selected.
If n is 5 (05h or 35h), CODEPAGE 858 is selected.
If n is 6 (06h or 36h), CODEPAGE 866 is selected.
If n is 7 (07h or 37h), CODEPAGE 864 is selected.
If n is 8 (08h or 38h), UTF8 (Unicode) is selected.
If n is 9 (09h or 39h), Big-5E is selected.
If n is 10 (0Ah or 3Ah), JIS is selected.
If n is 11 (0Bh or 3Bh), SHIFT JIS is selected.
If n is 12 (0Ch or 3Ch), GB2312 is selected.
If n is 14 (0Eh or 3Eh), EUC-CN is selected.
If n is 21 (15h or 45h), CODEPAGE 862 is selected
 
E o código de barras e o QRCode foram impressos corretamente?

 

 

André o QRCode funcionou certinho está aparecendo a consulta direito.

 

A questão a acentuação eu não entendi o que você disse para fazer.

Thiago Balbino

Analista de Sistemas Programador

email: [email protected]

Muriaé - MG

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

A questão a acentuação eu não entendi o que você disse para fazer.

Na imagem que vc postou os acentos não estão sendo impressos corretamente, precisamos saber qual página de códigos da impressora é compatível com as strings q estamos enviando, para isso, abra o arquivo ACBrNFeDANFeESCPOS.pas e altere a linha que citei acima, troque o 4 do final por um dos números destacados em negrito e imprima novamente o DANFe, e verifique em qual delas os acentos serão impressos corretamente.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Moderadores

André fiz o teste um a um com os códigos que postou, e nenhum funcionou a questão da acentuação.

Faça mais um teste por favor, use o código 8, cCmdPagCod := #27+'t'+#8;  e nas strings,use UTF8Encode.

 

Ex:

 

  FLinhaCmd := cCmdImpNegrito+cCmdFontePequena+
              ('CNPJ:'+DFeUtil.FormatarCNPJ(FpNFe.Emit.CNPJCPF)+'   '+
              UTF8Encode('Inscrição Estadual:')+Trim(FpNFe.Emit.IE))+cCmdImpFimNegrito;
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

 

Faça mais um teste por favor, use o código 8, cCmdPagCod := #27+'t'+#8;  e nas strings,use UTF8Encode.

 

Ex:

 

  FLinhaCmd := cCmdImpNegrito+cCmdFontePequena+
              ('CNPJ:'+DFeUtil.FormatarCNPJ(FpNFe.Emit.CNPJCPF)+'   '+
              UTF8Encode('Inscrição Estadual:')+Trim(FpNFe.Emit.IE))+cCmdImpFimNegrito;

 

 

Não deu certo.

Thiago Balbino

Analista de Sistemas Programador

email: [email protected]

Muriaé - MG

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não deu certo.

Então vamos ter q aguardar que alguém com mais experiência nessa impressora faça os ajustes e nos envie.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Pessoal,

 

Testei as alterações que André fez e está tudo OK.

 

Já recebi a Daruma, tive alguma dificuldade para imprimir o QRCode (consegui imprimir, mas está pequeno)... o pessoal da Daruma ontem me enviou um exemplo em Delphi (sem DLL), vou fazer testes e quando estiver implementado no ACBr envio o código aqui pelo fórum.

A Daruma está funcionando com os comandos do ESC/POS? Caso não esteja podemos seguir a mesma alteração que foi feita pra Bematech e usar os comandos diretos do fabricante.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Tchuck, você habilitou o modo BEMA/POS via "Bematech Tool"?

 

André, fiz os testes com a última revisão usando a impressora Daruma DR-700e... no aplicativo de configuração da Daruma tem 2 set's de comandos, testei com os dois, mas o resultado não é muito bom (anexo).

 

Fiz o teste com o modelo "Epson" na esperança que a Daruma tivesse seguido o padrão ESC/POS, mas saiu tudo quebrado... testei como "Bematech", mas o BEMA/POS é bem específico e já esperava que não funcionasse.

 

Vou dar uma lida no material da Daruma e tentar implementar as alterações.

 

Quanto a Bematech, vou ligá-la agora para fazer testes e em outra mensagem posto os resultados.

 

Obrigado pela força.

post-24-0-81488000-1415834969_thumb.jpg

Editado por welkson

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

André,

 

Só consegui imprimir acentos usando o codepage 850, só temos que ver como mandar isso para a impressora via Delphi (fiz testes pelo prompt e usando Notepad++).

 

Screenshots estão anexados. Testei também a impressão do DANFE, e ficou igual ao do colega (LOE no início).

post-24-0-44429800-1415838362.png

post-24-0-69969500-1415838367_thumb.png

post-24-0-36677400-1415838376_thumb.jpg

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

André, obrigado pelo retorno.

 

Só vou ter acesso a impressora a noite, irei fazer os testes e retorno pra você.

 

Configurei a impressora com vários modelos de codepage (UTF-8, etc.), mas os acentos não são impressos (mesmo o Notepad++ configurado para UTF-8).

 

Depois de muito teste descobri que fazendo um "echo çâéã > COM5" direto pelo MS-DOS funcionava... tentei descobrir qual codepage o MS-DOS usava, na internet dizem que é CP850, mas se pegar a saída do ECHO, jogar para um TXT, e abrir pelo Notepad++ ele avisa que se trata de codepage "ANSI". Codepage/Charset etc. não é muito minha praia, mas vou continua pesquisando e tentando contribuir de alguma forma.

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

Só pra registrar, acabo de falar com o suporte da Daruma, e a mesma não suporta ESC/POS.

 

Teremos que implementar essas diferenças de cada modelo de impressora.

 

SET de comandos da Daruma: http://bit.ly/18wYfO2

 

Peço desculpas por usar esse tópico (que é sobre Bematech) para falar sobre outros modelos de impressora. Acredito que para efeitos de histórico seria interessante mudar o título para "ACBrESCPOS - Impressoras Compatíveis" #sugestão

Editado por welkson

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

 

 

André,

 

Só consegui imprimir acentos usando o codepage 850, só temos que ver como mandar isso para a impressora via Delphi (fiz testes pelo prompt e usando Notepad++).

 

Screenshots estão anexados. Testei também a impressão do DANFE, e ficou igual ao do colega (LOE no início).

Welkson, onde você alterou essa configuração ? Qual programa é esse ?

 

 

Encontrei é este:

 

http://partners.bematech.com.br/suporte-recursos/downloads/?did=143

Editado por tbalbinos

Thiago Balbino

Analista de Sistemas Programador

email: [email protected]

Muriaé - MG

 

Link para o comentário
Compartilhar em outros sites

André, fiz o teste, os acentos continuam quebrados.

 

Fiz o seguinte, voltei a impressora para UTF-8, e fiz um pequeno aplicativo no Delphi para fazer testes de conversão de encoding e consegui imprimir os acentos corretamente quando usei UTF8Encode.

 

Algo assim:

procedure TForm5.Print();
var
   F:TextFile;
begin
   AssignFile(F, 'COM5');
   Rewrite(F);
   WriteLn(F, UTF8Encode(Text)); //codifico o texto recebido em UTF-8
   CloseFile(F);
end;

Dessa forma os acentos são corretamente, ou seja, poderíamos alterar o ACBrESCPOS incluindo essa instrução nas linhas que recebem dados do cliente, produtos, etc.

 

Quanto ao problema do (LOE está na seguinte linha:

  FBuffer.Add(FLinhaCmd+chr(29)+'(L'+chr(6)+chr(0)+'0E  '+chr(1)+chr(1)); // Imprimindo logo já gravado na memória

Não encontrei no manual de programação da impressora esse comando L0E.. comentei esse trecho apartir do +chr(29) e o problema sumiu. Essa linha não é para a Epson?

Editado por welkson

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

André,

 

Estou anexando o código do ACBrNFeDANFeESCPOS com os problemas de acentuação corrigidos.

 

Resumo das alterações:

  • Criei um método CodificaStringESCPOS para codificar em UTF8 todas as strings quando o modelo de impressora for Bematech;
  • Alterei o cCmdPagCod/codepage para #8 (UTF-8);
  • Na linha 203 onde é enviado um comando para imprimir a logomarca gravada na impressora, coloquei um IF para só enviar o comando L0E quando a impressora for Epson (TODO: futuramente implementar a impressão de logomarca quando usando Bematech);

 

Testei os demais comandos (negrito, condensado, corte de papel, etc), e estão todos corretos.

 

Tentei manter o estilo de código do projeto ACBr, mas pode ter ficado algo fora do padrão, fique a vontade para corrigir, fazer refactory na implementação, etc.

 

Em breve começo os testes com Daruma e mando o código quando estiver pronto.

 

 

ACBrNFeDANFeESCPOS.pas

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

Bom dia Thiago.

 

Só estou conseguindo trabalhar na impressora a noite... mais tarde faço testes e retorno com as respostas.

 

Aparentemente está tudo certo com a configuração da impressora (UTF8, BEMA/POS, etc.)... lembrando que o comando de conversão só é executado se a propriedade MarcaImpressora estiver definida como iBematech no componente ACBrESCPOS;

 

Testei no Delphi 2006, você usa qual?

WRMedeiros

Focus

Link para o comentário
Compartilhar em outros sites

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