Imprimir direto na Zebra TLP 2844

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Imprimir direto na Zebra TLP 2844

Mensagem por rosalvo rosa »

Olá amigos !

Recorro aos colaboradores deste forum para tentar superar uma dificuldade que estou encontrando :

Preciso imprimir etiquetas, não nescessariamente codigo de barras, textos mesmo, em impressora Zebra TLP 2844.

Pergunto :

Posso fazer isso direto pelo Harbour , sem depender de "PRESILO" ou outros ?

Como seria o Layout para definir a posição dos caracteres ?

Alguém teria um exemplo de código ?

Fico agradecido pela ajuda desde já.

Rosalvo.
jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Imprimir direto na Zebra TLP 2844

Mensagem por jamazevedo »

Não é bicho de 7 cabeças:

Código: Selecionar todos

funcion main()
            local cEtiqueta := ""
            local cArquivo  := "etiqueta.prn"
            local nHandle
 	    cEtiqueta := cEtiqueta + "Q104,24" + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "q831"    + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "rN"      + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "S4"      + CHR( 13 ) + CHR( 10 )
            cEtiqueta := cEtiqueta + "D10"  + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "ZT"      + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "JB"      + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "OD"      + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "R56,0"   + CHR( 13 ) + CHR( 10 )
	    cEtiqueta := cEtiqueta + "N"       + CHR( 13 ) + CHR( 10 )
            cEtiqueta := cEtiqueta + "P1" + CHR( 13 ) + CHR( 10 )
            nHandle   := FCREATE( ( cArquivo ) , 0 )
	    FWRITE( nHandle , cEtiqueta )
	    FCLOSE( nHandle )
            /// No Linux imprimo, assim diretamente, através do comando LPR
            run ( "lpr -pNOME_DA_IMPRESSORA etiqueta.prn" )
            /// Em Windows ou Harbour se não estou enganado será assim:
            /// run ( "type etiquta.prn >prn" )
return   nil
O arquivo "etiqueta.prn" depois de gerado fica assim:
Q104,24
q831
rN
S4
D7
ZT
JB
OD
R56,0
N
B120,0,0,2,2,5,50,B,"02048001"
B480,0,0,2,2,5,50,B,"02048002"
P1
É só enviá-lo para impressora diretamente.

Os comando: Q, q, S, D, etc você tem que ler o manual da impressora para entender o significado.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: Imprimir direto na Zebra TLP 2844

Mensagem por rosalvo rosa »

Obrigado José Airton!

Seu exemplo foi muito bom.
Vou tentar conseguir um manual da impressora.

O comando para imprimir, como vou comandar via USB, eu verifiquei aqui no forum, eu devo usar o PRINTFILERAW().

Um abraço.

Rosalvo.
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

jamazevedo escreveu:B120,0,0,2,2,5,50,B,"02048001"
B480,0,0,2,2,5,50,B,"02048002"
boa noite!
sei q o tópico é muito antigo, mas, preciso da ajuda, e, preferi não abrir outro desnessariamente.
Vejo q no resultado tem as linhas acima, mas, nas linhas de programação elas não existem.

O meu código já funciona na conversão para o harbour.
mas, ao tentar fazer uma migração para HMG 3.4.4 usando o FORM_WIN as minhas linhas abaixo:

Código: Selecionar todos

     @ prow()+1,0 say 'A0,10,0,2,1,1,N,"&mDS_PRODL1"'
     @ prow()+1,0 say 'A280,10,0,2,1,1,N,"&mDS_PRODL1"'
     @ prow()+1,0 say 'A562,10,0,2,1,1,N,"&mDS_PRODL1"'

     @ prow()+1,0 say 'A0,31,0,2,1,1,N,"&mDS_PRODL2"'
     @ prow()+1,0 say 'A280,31,0,2,1,1,N,"&mDS_PRODL2"'
     @ prow()+1,0 say 'A562,31,0,2,1,1,N,"&mDS_PRODL2"'

     @ prow()+1,0 say 'A0,51,0,2,1,1,N,"&mDS_PRODL3"'
     @ prow()+1,0 say 'A280,51,0,2,1,1,N,"&mDS_PRODL3"'
     @ prow()+1,0 say 'A562,51,0,2,1,1,N,"&mDS_PRODL3"'

     @ prow()+1,0 say 'B1,66,0,E30,2,2,50,B,"&mCD_PRODUT"'
     @ prow()+1,0 say 'B280,66,0,E30,2,2,50,B,"&mCD_PRODUT"'
     @ prow()+1,0 say 'B562,66,0,E30,2,2,50,B,"&mCD_PRODUT"'

     @ prow()+1,0 say 'A0,131,0,2,1,1,N,"&mVR_PREVEN"'
     @ prow()+1,0 say 'A280,131,0,2,1,1,N,"&mVR_PREVEN"'
     @ prow()+1,0 say 'A562,131,0,2,1,1,N,"&mVR_PREVEN"'
     @ prow()+1,0 say 'P' + mQT_LINHAS

apresentaram erro de macro substituição. Alguém sabe dizer o que houve?
Já a última linha de código acima (mqt_linhas) apresentou o erro:
Error BASE/1081 Argument Error: +
Tudo bem que entendo que está se somando erroneamente:
P (C) + mQT_LINHAS (N) - realmente há incompatibilidade de String + numérico. Mas, por que na conversão de CLIPPER para HARBOUR seco funciona e de HARBOUR para HMG (modo gráfico) apresentou esse erro?
E, apresentou o erro das MACRO também?

grato
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

alguém ajuda, por favor!
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Imprimir direto na Zebra TLP 2844

Mensagem por Heero »

microvolution,

Sugestão besta, mas por favor, tente assim:

Código: Selecionar todos

@ prow()+1,0 say 'P' + str(mQT_LINHAS)
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

Olá Heero bom dia!
Heero escreveu:@ prow()+1,0 say 'P' + str(mQT_LINHAS)
obrigado pela dica. parou de gerar o erro.
agora vou experimentar na impressora pra ver o que realmente acontece.
mas, a questão da macrosubstituição ainda gera erro.
grato.
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Imprimir direto na Zebra TLP 2844

Mensagem por Heero »

microvolution,

O erro é apresentado na tela? Se sim pode postar aqui?
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

Heero escreveu:O erro é apresentado na tela?
sim.
veja(m):

c:\hmg\etiqueta.prg(471) Error E0042 Macro of declared symbol 'A0,10,0,2,1,1,N ,"&mDS_PRODL1"'
observação muito importante:
1 - no clipper já funcionava assim:
2 - na migração de clipper para harbour pura já funcionava assim:
3 - agora quando resolvi migrar de harbour (modo console) para HMG 3.4.4 (modo 100% gráfico) é que apareceu esse erro.
grato!
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Imprimir direto na Zebra TLP 2844

Mensagem por Heero »

Você está declarando essas variáveis que tá usando como macro? Se sim tente não declara-las.

Fonte: viewtopic.php?f=4&t=12310
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

Heero escreveu:Se sim tente não declara-las.
muito esquisito, mas, sua dica q eu vi no post q vc reportou funcionou.
vai entender né?
talvez um dos nobres colaboradoes como o JQuintas possa trazer uma explicação sobre essa declaração que não é aceita pelo harbour.
E foi muito bem dito, conforme o meu passo a passo:
1 - quando em clipper eu não as declarava como LOCAL, PRIVATE ou PUBLIC em lugar algum;
2 - quando migrei de clipper para harbour (modo console) também não as declarei;
3 - quando agora estou migrando todos os módulos externos do meu sistema para modo 100% gráfico, usando a HMG, ou GTWVW ou GTWVG, mas, neste caso específico estou usando a HMG 3.4.4 (não usando as outras que citei), resolvi declarar essas variáveis como LOCAL dentro da função de impressão das etiquetas.
4 - só pra desencargo de consciência, vou testar como PRIVATE dentro da função e como PUBLIC no início da FUNCTION MAIN pra ver no que vai dar e aí posto aqui pra todos saberem.
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

5 - aceitou o comando PRIVATE;
6 - aceitou o comando PUBLIC;
7 - aceitou sem declarar nada.

Conclusão a grosso modo. O harbour não aceita a utilização de macro com declaração de apenas LOCAL.

Se, o JQuintas - nosso amigo e demais tiverem mais alguma opinião, sejam bem vindos.
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Imprimir direto na Zebra TLP 2844

Mensagem por Heero »

Problema resolvido né? rs
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

Heero escreveu:Problema resolvido né? rs
aparentemente sim.
agora só estou esperando chegar a impressora pra fazer o teste real nela.
imprimindo em PDF não dá o resultado que a gente quer ou imagina que sairá na impressora.
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Imprimir direto na Zebra TLP 2844

Mensagem por microvolution »

Agora, aproveitando, nunca precisei via programação (já funciona há 20 anos assim), diminuir a velocidade ou imprimir mais escuro.
A impressora TLP2844 do cliente estragou, mandou pro conserto e quando voltou as etiquetas estão saindo um pouco claras.
Existe uma forma da gente aumentar o NEGRITO (escurecer a impressão)?

grato.
Responder