Impressora Label Printer - Linguagem TSPL
Moderador: Moderadores
-
Marcio_Carneiro
- Usuário Nível 2

- Mensagens: 70
- Registrado em: 07 Abr 2008 15:37
- Localização: Santo Antônio de Pádua - RJ
Impressora Label Printer - Linguagem TSPL
Boa tarde amigos,
Um cliente para ajudar comprou uma impressora Label Printer, e ela utiliza a linguagem TSPL acima.
Já estou acostumado com a Argox, mas essa aí está me dando trabalho via xharbour.
Os comandos são literais:
SIZE 105 mm
GAP 3 mm,0 mm
SPEED 4
DENSITY 7
DIRECTION 1
CLS
BACKFEED
TEXT 20,01,"3",0,1,1,"FOTO MIRACEMA"
BARCODE 50,75,'128',42,0,0,2,2,'02014'
PRINT 1
e utilizando Win32Prn, enviando o texto acima, ela imprime o texto acima, sem fazer a configuração.
Já testei num programa Delphi(AcbrPosPrinter) e vai. Não sei se está faltando algum comando no texto para informar a impressora os comandos e não imprimir literalmente o texto.
No prg Delphi, ele gera uma string com todos os comandos acima numa única linha somente acrescentando o salto de linha(desconfio) #$A.
Se alguém tiver alguma experiência que possa me ajudar, agradeço
Um abraço
Marcio
Um cliente para ajudar comprou uma impressora Label Printer, e ela utiliza a linguagem TSPL acima.
Já estou acostumado com a Argox, mas essa aí está me dando trabalho via xharbour.
Os comandos são literais:
SIZE 105 mm
GAP 3 mm,0 mm
SPEED 4
DENSITY 7
DIRECTION 1
CLS
BACKFEED
TEXT 20,01,"3",0,1,1,"FOTO MIRACEMA"
BARCODE 50,75,'128',42,0,0,2,2,'02014'
PRINT 1
e utilizando Win32Prn, enviando o texto acima, ela imprime o texto acima, sem fazer a configuração.
Já testei num programa Delphi(AcbrPosPrinter) e vai. Não sei se está faltando algum comando no texto para informar a impressora os comandos e não imprimir literalmente o texto.
No prg Delphi, ele gera uma string com todos os comandos acima numa única linha somente acrescentando o salto de linha(desconfio) #$A.
Se alguém tiver alguma experiência que possa me ajudar, agradeço
Um abraço
Marcio
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Impressora Label Printer - Linguagem TSPL
Olá!
Use raw(texto puro)
Saudações,
Itamar M. Lins Jr.
Use raw(texto puro)
Código: Selecionar todos
nResult := PrintFileRaw( cPrinter, cFileName, "Etiqueta XYZ" )
IF nResult = -1
cMsg = "Parametros Invalido, Favor Tentar Novamente"
ELSEIF nResult = -2
cMsg = "Falha na chamada da Impressora, Favor Verificar a Impressora"
ELSEIF nResult = -3
cMsg = "Falha ao Iniciar Impressão, Favor Verificar a Impressora"
ELSEIF nResult = -4
cMsg = "Falha ao Iniciar a Primeira Pagina, Favor Verificar a Impressora"
ELSEIF nResult = -5
cMsg = "Falha de Memoria da Impressora, Favor Verificar a Impressora"
ELSEIF nResult = -6
cMsg = "Não foi Possivel localizar o arquivo de Impressão, Favor Tentar Novamente"
ENDIFItamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Marcio_Carneiro
- Usuário Nível 2

- Mensagens: 70
- Registrado em: 07 Abr 2008 15:37
- Localização: Santo Antônio de Pádua - RJ
Impressora Label Printer - Linguagem TSPL
Boa tarde, obrigado pela atenção
Tentei compilar (utilizo HMG 2010.06.20) e não deu para utilizar o PrintFileRaw()
O Win_PrintFile_Raw() funciona, mas esse não consigo dá erro, pelo visto falta algum arquivo.
Poderia me dar, se possível, mais alguma instrução?
Corrigindo: pesquisando aqui descobri como adicionar o PrintFileRaw() no meu prg.
Mas mesmo assim, envia para impressora e ela não imprime.
Tentei compilar (utilizo HMG 2010.06.20) e não deu para utilizar o PrintFileRaw()
O Win_PrintFile_Raw() funciona, mas esse não consigo dá erro, pelo visto falta algum arquivo.
Poderia me dar, se possível, mais alguma instrução?
Corrigindo: pesquisando aqui descobri como adicionar o PrintFileRaw() no meu prg.
Mas mesmo assim, envia para impressora e ela não imprime.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Impressora Label Printer - Linguagem TSPL
Olá!
https://pctoledo.org/forum/viewto ... =4&t=18709
Leia esse tópico, pq tem provavelmente seu problema nele resolvido.
Saudações,
Itamar M. Lins Jr.
https://pctoledo.org/forum/viewto ... =4&t=18709
Leia esse tópico, pq tem provavelmente seu problema nele resolvido.
Código: Selecionar todos
cDefaultPrinter := WIN_PRINTERGETDEFAULT()
WIN_PRINTFILERAW( cDefaultPrinter, Prnfile.txt )
É segredo o erro ? cadê para a gente ver !mas esse não consigo dá erro,
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Marcio_Carneiro
- Usuário Nível 2

- Mensagens: 70
- Registrado em: 07 Abr 2008 15:37
- Localização: Santo Antônio de Pádua - RJ
Impressora Label Printer - Linguagem TSPL
Muito obrigado novamente.
O erro que relatei era a ausência do PrintFileRaw() no projeto, e dava erro na compilação. O texto ficou truncado
Mas o importante: RESOLVIDO!!!!
Com ajuda do amigo, consegui.
Primeiro, seguindo um tópico anterior, coloquei o PrintFileRaw() no grupo e compilou.
Segundo, na ânsia de corrigir e descobrir onde era o gargalo, estava gerando o arquivo txt com set printer to nomedoarquivo.txt mas não estava fechando o arquivo, com o Set Printer To.
Então o PrintFileRaw() não encontrava o arquivo, pois o mesmo não estava disponível. ( Você fica procurando o díficil, e o fácil te atrapalha).
Peguei o arquivo.txt e informei diretamente no PrintFileRaw() e ele imprimiu as etiquetas. Maravilha. Mas como felicidade de programador dura pouco, a impressão entrava em loop.
Terceiro:Voltei ao Manual de Programação da Linguagem TSPL (singelo, 35 páginas) e fuçando descobri uma função que se utiliza quando carrega um arquivo na memória da impressora, imagem ou dados.
Inseri esse comando para ver o bicho que ia dar, e felizmente, está funcionando.
Então é o seguinte: impressora Label Printer, linguagem TSPL roda tranquilo no Harbour..
O texto do programa é o seguinte
Muitíssimo obrigado pela atenção. E fica para todo mundo a solução.
E uma pergunta: tem como gerar esse arquivo txt em memória em vez do disco?
Um forte abraço
Marcio
O erro que relatei era a ausência do PrintFileRaw() no projeto, e dava erro na compilação. O texto ficou truncado
Mas o importante: RESOLVIDO!!!!
Com ajuda do amigo, consegui.
Primeiro, seguindo um tópico anterior, coloquei o PrintFileRaw() no grupo e compilou.
Segundo, na ânsia de corrigir e descobrir onde era o gargalo, estava gerando o arquivo txt com set printer to nomedoarquivo.txt mas não estava fechando o arquivo, com o Set Printer To.
Então o PrintFileRaw() não encontrava o arquivo, pois o mesmo não estava disponível. ( Você fica procurando o díficil, e o fácil te atrapalha).
Peguei o arquivo.txt e informei diretamente no PrintFileRaw() e ele imprimiu as etiquetas. Maravilha. Mas como felicidade de programador dura pouco, a impressão entrava em loop.
Terceiro:Voltei ao Manual de Programação da Linguagem TSPL (singelo, 35 páginas) e fuçando descobri uma função que se utiliza quando carrega um arquivo na memória da impressora, imagem ou dados.
Inseri esse comando para ver o bicho que ia dar, e felizmente, está funcionando.
Então é o seguinte: impressora Label Printer, linguagem TSPL roda tranquilo no Harbour..
O texto do programa é o seguinte
Código: Selecionar todos
Set device to Printer
SET Printer to "C:\LABEL.TXT"
@ prow(),00 say "SIZE 105 mm"
@ prow()+1,00 say "GAP 3 mm,0 mm"
@ prow()+1,00 say "SPEED 4"
@ prow()+1,00 say "DENSITY 7"
@ prow()+1,00 say "DIRECTION 1"
@ prow()+1,00 say "CLS"
@ prow()+1,00 say "BACKFEED"
@ prow()+1,00 Say 'TEXT 20,01,"3",0,1,1,"FOTO MIRACEMA"'
@ prow()+1,00 Say 'TEXT 310,01,"3",0,1,1,"FOTO MIRACEMA"'
@ prow()+1,00 Say 'TEXT 601,01,"3",0,1,1,"FOTO MIRACEMA"'
@ prow()+1,00 Say 'TEXT 28,27,"2",0,1,1,"ADESIVO ESTRELAS"'
@ prow()+1,00 Say 'TEXT 310,27,"2",0,1,1,"ADESIVO ESTRELAS"'
@ prow()+1,00 Say 'TEXT 601,27,"2",0,1,1,"ADESIVO ESTRELAS"'
@ prow()+1,00 Say 'TEXT 28,50,"2",0,1,1,"/ASTROS FLUORESC"'
@ prow()+1,00 Say 'TEXT 318,50,"2",0,1,1,"/ASTROS FLUORESC"'
@ prow()+1,00 Say 'TEXT 609,50,"2",0,1,1,"/ASTROS FLUORESC"'
@ prow()+1,00 Say 'BARCODE 50,75,"128",42,0,0,2,2,"02014"'
@ prow()+1,00 Say 'TEXT 20,120,"2",0,1,1,"02014 R$ 9,999,99"'
@ prow()+1,00 Say 'BARCODE 340,75,"128",42,0,0,2,2,"02014"'
@ prow()+1,00 Say 'TEXT 310,120,"2",0,1,1,"02014 R$ 999,99"'
@ prow()+1,00 Say 'BARCODE 630,75,"128",42,0,0,2,2,"02014"'
@ prow()+1,00 Say 'TEXT 601,120,"2",0,1,1,"02014 R$ 99,99"'
@ prow()+1,00 say "PRINT 1,1"
@ prow()+1,00 say "EOP"
SET PRINTER TO
nResult := PrintFileRaw(gprintername,"C:\LABEL.TXT",'Impressao Teste')E uma pergunta: tem como gerar esse arquivo txt em memória em vez do disco?
Um forte abraço
Marcio
-
Marcio_Carneiro
- Usuário Nível 2

- Mensagens: 70
- Registrado em: 07 Abr 2008 15:37
- Localização: Santo Antônio de Pádua - RJ
Impressora Label Printer - Linguagem TSPL
Vida de programador não fácil...
Agora surgiu uma nova dúvida:
O comando de texto ou código de barras precisa informar o dado entre aspas.
'TEXT 28,27,"2",0,1,1,"ADESIVO ESTRELAS"'
Se colocar o dado direto do programa não funciona
'TEXT 28,27,"2",0,1,1,produto->nome
Alguma sugestão?
Agora surgiu uma nova dúvida:
O comando de texto ou código de barras precisa informar o dado entre aspas.
'TEXT 28,27,"2",0,1,1,"ADESIVO ESTRELAS"'
Se colocar o dado direto do programa não funciona
'TEXT 28,27,"2",0,1,1,produto->nome
Alguma sugestão?
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Impressora Label Printer - Linguagem TSPL
Olá!
Podemos usar: [ 'teste', "1,1,1" ]
Se deseja que saia " e ' use [ ]
Saudações,
Itamar M. Lins Jr.
Podemos usar: [ 'teste', "1,1,1" ]
Se deseja que saia " e ' use [ ]
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Impressora Label Printer - Linguagem TSPL
Olá!
Então mais uma dica.
Quer colocar " no texto use ' e sinal de +
Por exemplo:
'TEXT 28,27,"2",0,1,1, " ' + produto->nome + ' " '
LetoDB, SQL, HTML usamos muito isso.
Saudações,
Itamar M. Lins Jr.
Então mais uma dica.
Quer colocar " no texto use ' e sinal de +
Por exemplo:
'TEXT 28,27,"2",0,1,1, " ' + produto->nome + ' " '
LetoDB, SQL, HTML usamos muito isso.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Marcio_Carneiro
- Usuário Nível 2

- Mensagens: 70
- Registrado em: 07 Abr 2008 15:37
- Localização: Santo Antônio de Pádua - RJ
Impressora Label Printer - Linguagem TSPL
Boa tarde.
Nem sei como agradecer, com sua ajuda, estou conseguindo.
E com vergonha pergunto: e para informar variável de memória ou valores numéricos como faço?
'TEXT 20,320,"2",0,1,1,"'+preco_pro+'"'
onde preco_pro:=str(produtos->preco) //transformo em string.
Desculpe a aporrinhação...
Nem sei como agradecer, com sua ajuda, estou conseguindo.
E com vergonha pergunto: e para informar variável de memória ou valores numéricos como faço?
'TEXT 20,320,"2",0,1,1,"'+preco_pro+'"'
onde preco_pro:=str(produtos->preco) //transformo em string.
Desculpe a aporrinhação...
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Impressora Label Printer - Linguagem TSPL
Olá!
ou
Etc...
Veja se passa ponto ou virgula como decimais. Se for ponto(.) Remova "@E" do transform() ou use a opção de baixo.
Saudações,
Itamar M. Lins Jr.
Use transform() e ltrim() na verdade tem várias formas de fazer.e para informar variável de memória ou valores numéricos como faço?
Código: Selecionar todos
'TEXT 20,320,"2",0,1,1,"'+ltrim(transform(produtos->preco,"@E 999,999,999.999"))+'"'
Código: Selecionar todos
'TEXT 20,320,"2",0,1,1,"'+ntos(produtos->preco)+'"'
Veja se passa ponto ou virgula como decimais. Se for ponto(.) Remova "@E" do transform() ou use a opção de baixo.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Marcio_Carneiro
- Usuário Nível 2

- Mensagens: 70
- Registrado em: 07 Abr 2008 15:37
- Localização: Santo Antônio de Pádua - RJ
Impressora Label Printer - Linguagem TSPL
Muito obrigado pela atenção.
Mas consegui resolver. Esse monte de aspas duplas e simples complica.
Mas já tá legal.
Um grande abraço e muitíssimo obrigado pela sua atenção
Marcio
Mas consegui resolver. Esse monte de aspas duplas e simples complica.
Mas já tá legal.
Um grande abraço e muitíssimo obrigado pela sua atenção
Marcio