Ir para conteúdo
  • Cadastre-se

dev botao

Impressão usando a LibPosPrinter


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1680 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado (editado)

Boa Tarde,

comecei essa semana a usar a LibPosPrinter no linux junto com o Harbour, não tiver nenhum problema em criar os Metodos para o bom funcionamento da lib.

bem encontrei duas dificuldades a primeira foi quando tentei imprimir invertido ( <in> ), não imprimiu, estou mandado o log junto com imagem,

segundo mesmos mudando a pagina de codigo não consigo acentuar usando a lib...

desde já obrigado...

minha impressora é uma bematech MP-4200 TH

WhatsApp Image 2020-04-13 at 18.45.05.jpeg
Equipamentos testados

acbrlib.ini ACBrLibPosPrinter-20200413.log

Editado por jamil
Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

  • Membros Pro
Postado
5 minutos atrás, Rafael Dias disse:

Esta impressora é dor de cabeça.

Você esta usando as configurações recomendadas neste topico ?

 

sim sim, já havia visto este tópico também 

nem ali tem a demonstração da impressão do invertido, <in> </in> como eu mostrei usando comando esc/pos direto na impressora funciona

assim como os acentos..... só isso, as demais instruções/comandos (negrito, sublinhado, comprimido etc..) estão funcionando perfeitamente na impressora....

 

Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

Postado

Então como disse esta impressora tem um esquema de mudar para usar a emulação EscPos ou usa EscBema se você olhar na imagem do topico esta configurada para escbema, então se a sua impressora estiver configurara para usar emulação de escpos os comandos escbema não funciona e vice e versa

O recomendado para esta impressora é ser configurado em escbema.

 

  • Membros Pro
Postado
17 minutos atrás, Rafael Dias disse:

Então como disse esta impressora tem um esquema de mudar para usar a emulação EscPos ou usa EscBema se você olhar na imagem do topico esta configurada para escbema, então se a sua impressora estiver configurara para usar emulação de escpos os comandos escbema não funciona e vice e versa

O recomendado para esta impressora é ser configurado em escbema.

mudei para esc/bema, não funcionou, continuou o mesmo problema

 

Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

Postado

mudou usando o programa da bematech ou mudou o modelo utilizado pelo posprinter, se mudou o modelo do posprinter não resolveu o problema, use o programa de configuração da bematech e mude la para impressora trabalhar com este protocolo.

 

  • Fundadores
Postado

O ACBr apenas suporta essa impressora, em Modo Esc/Bema...

pag_codigo_.jpg

 

Ela não tem suporte a formatação INVERTIDO...

impressão007.jpeg

Já os acentos funcionam nela... você tem que ajustar na Impressora, para usar o mesmo Encoding dos caracteres que você está enviando...

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.

  • Membros Pro
Postado

Obrigado @Daniel Simoes

perfeito, o invertido só funciona  em esc/pos, assim como algumas outras funções da Bematech,

vou fazer mais uns teste para ver porque ela não esta acentuando mesmo selecianado cp850.

existe previsão para cria o suporte esc/pos para Bematech ?

Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

  • Fundadores
Postado

Você está enviando os acentos em UTF8... Veja esse trecho do Log:

Citar

<c>Emiss[195][163]o   =   <c>Emissão 

ã = 㠠 em UTF8

https://www.utf8-chartable.de/
U+00E3    ã    c3 a3    LATIN SMALL LETTER A WITH TILDE

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.

  • Membros Pro
Postado
49 minutos atrás, Daniel Simoes disse:

Você está enviando os acentos em UTF8... Veja esse trecho do Log:

https://www.utf8-chartable.de/
U+00E3    ã    c3 a3    LATIN SMALL LETTER A WITH TILDE

Eu enviei como envio todas as escritas que são acentuadas para impressora (seja via Cairo ou EscPos -cp850-  ) ou para o Gui (na tela )

uso no caso do nosso exemplo   hb_utf8tostr( "emissão" ) e sai acentuado, 

quando usei esse mesmo processo com a LibPos ela mudou para Emiss[195][163]o 

 

 

Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

  • Fundadores
Postado

@jamil, notei que não temos no SVN da ACBrLib, uma classe de Alto nível, para o ACBrPosPrinter, para Harbour... e estou sem comunicação com o @Rafael Dias, que está afastado por problemas pessoais...

Você mesmo que desenvolveu essa classe ?

Creio que a conversão de ANSI para UTF8, possa estar nela... Você poderia compartilhar esse Classe ?

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.

  • Membros Pro
Postado (editado)
6 minutos atrás, Daniel Simoes disse:

@jamil, notei que não temos no SVN da ACBrLib, uma classe de Alto nível, para o ACBrPosPrinter, para Harbour... e estou sem comunicação com o @Rafael Dias, que está afastado por problemas pessoais...

Você mesmo que desenvolveu essa classe ?

Creio que a conversão de ANSI para UTF8, possa estar nela... Você poderia compartilhar esse Classe ?

Sim, segue ...

 

acbrlibpos.prg

Editado por jamil
Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

Postado

se você observar na sua classe você esta fazendo a conversão da string para utf8

hResult := DllCall(::hHandle, DLL_OSAPI, "POS_Imprimir", hb_StrToUTF8(eString), PulaLinha, DecodificarTags, CodificarPagina, Copias)

a função hb_StrToUTF8 faz isso.

 

  • Membros Pro
Postado
10 horas atrás, Rafael Dias disse:

se você observar na sua classe você esta fazendo a conversão da string para utf8


hResult := DllCall(::hHandle, DLL_OSAPI, "POS_Imprimir", hb_StrToUTF8(eString), PulaLinha, DecodificarTags, CodificarPagina, Copias)

a função hb_StrToUTF8 faz isso.

@rafael dias, se retirar a função, fica da seguinte maneira (segue na imagem)

    hResult := DllCall(::hHandle, DLL_OSAPI, "POS_Imprimir", eString, PulaLinha, DecodificarTags, CodificarPagina, Copias)
 

WhatsApp Image 2020-04-17 at 07.56.44.jpeg

Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

  • Membros Pro
Postado (editado)
1 hora atrás, Daniel Simoes disse:

Agora parece ser um ajuste na Página de Código da Impressora...

Usando o programa da Bematech, tente 850, 852, 860

pag_codigo_.jpg

@Daniel Simoes,

me desculpe, posso até esta enganado, vou testar aqui,  mais esse ajuste pode ser feito via comando, sem precisar entrar no 

programa da Bematech, dito isso , acredito que quando utilizo ConfigGravarValor("PosPrinter", "PaginaDeCodigo", "2" )

ele já o fassa, ou deveria fazer.

 

Editado por jamil
Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

  • Fundadores
Postado
3 minutos atrás, jamil disse:

programa da Bematech, dito isso , acredito que quando utilizo ConfigGravarValor("PosPrinter", "PaginaDeCodigo", "2" )

não, nesse caso, estamos informando para o ACBrPosPrinter, que página de código ele deve usar, para enviar os caracteres a impressora... (ou seja, ele faz uma conversão interna, antes de enviar)

Mas a impressora precisa estar configurada, em seu Sw.Básico, para usar a mesma página de código...

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.

  • Membros Pro
Postado
25 minutos atrás, Daniel Simoes disse:

não, nesse caso, estamos informando para o ACBrPosPrinter, que página de código ele deve usar, para enviar os caracteres a impressora... (ou seja, ele faz uma conversão interna, antes de enviar)

Mas a impressora precisa estar configurada, em seu Sw.Básico, para usar a mesma página de código...

@Daniel Simoes

Espero poder contribuir, e assim resolvemos o problema em questão (assim espero)

mesmo que a impressora Bematech Esteja em esc/Pos ..... cp860 , posso alterar Sw.Básico via comando sem utilizar o programa da Bematech

exemplo em Decimal (que eu fiz , em uma impressora que era Esc/pos,)

27 64  -> reseta a impressora

29 249 53 0  -> seleciona esc/bema

29  249  55 2  ->cp850

 

escpos.png

escbema.png

Jamil Santos de Araújo

Engenheiro de sistemas /  Tec. Contabil

  • Fundadores
Postado

Sim... é possível mudar a página de Código de uma Impressora, usando EscPos... mas isso não está implementado no ACBrPosPrinter... por ser uma função pouco usada, e geralmente pode ser feita, pelo programa de Setup da Impressora... e o comando em EscPos para essa operação, muda consideravelmente, de acordo com a Marca e Modelo da Impressora...

Então o comando: ConfigGravarValor("PosPrinter", "PaginaDeCodigo", "2" )  apenas grava a informação no INI, para que o ACBrPosPrinter use essa página de código... mas não manda um comando até a Impressora, para que a página de código seja configurada..

Portanto é necessário ter certeza, de que o ACBrPosPrinter e a Impressora, estão "falando" na mesma página de código

 

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.

  • Este tópico foi criado há 1680 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.