You are on page 1of 32

Manual de Programao em Impressoras Trmicas

Manual de Programao em
Impressoras Trmicas
Arquivo:244243836.doc Impresso em: 15/09/2014 1/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
ACD Automao e Coleta de Dados
Departamento de Sistemas
Microsiga Software S/A
Av. Braz Leme, 1399
Casa Verde
So Paulo-SP
Arquivo:244243836.doc Impresso em: 15/09/2014 2/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
ndice
1. Consideraes Iniciais......................................................................................................4
2. Sentido de Impresso......................................................................................................5
2.1.Padro Zebra e Eltron (Programao ZPL e EPL).............................................................5
2.2. Padro Datamax (Programao DPL ).......................................................................6
2.3. Padro Intermec (Programao IPL).........................................................................7
3. Funes.........................................................................................................................8
3.1. MSCBPrinter.............................................................................................................8
3.2. MSCBClosePrinter.....................................................................................................9
3.3. MSCBBegin............................................................................................................10
3.4. MSCBEnd...............................................................................................................10
3.5. MSCBSay...............................................................................................................11
3.6. MSCBSayBar..........................................................................................................12
3.6.1. Utilizao do cdigo 128......................................................................................................13
3.6.2. IDENTIFICAO DE APLICAO (Ais)....................................................................................14
3.7. MSCBBox...............................................................................................................17
3.8. MSCBLineH............................................................................................................18
3.9. MSCBLineV.............................................................................................................18
3.10. MSCBLoadGraf......................................................................................................19
3.11. MSCBGraphic........................................................................................................20
3.12. MSCBChkStatus....................................................................................................20
3.13. MSCBInfoEti.........................................................................................................21
3.14. MSCBWrite...........................................................................................................22
3.15. MSCBVar..............................................................................................................22
4. Exemplos.....................................................................................................................24
4.1. Padro Datamax.....................................................................................................24
4.1.1. Exemplo 01.......................................................................................................................24
4.1.2. Exemplo 02.......................................................................................................................24
4.1.3. Exemplo 03.......................................................................................................................25
4.2. Padro Eltron..........................................................................................................26
4.2.1. Exemplo 01.......................................................................................................................26
4.2.2. Exemplo 02.......................................................................................................................26
4.2.3. Exemplo 03.......................................................................................................................27
4.3. Padro Intermec.....................................................................................................28
4.3.1. Exemplo 01.......................................................................................................................28
4.3.2. Exemplo 02.......................................................................................................................28
4.3.3. Exemplo 03.......................................................................................................................29
4.4. Padro Zebra..........................................................................................................30
4.4.1. Exemplo 01.......................................................................................................................30
4.4.2. Exemplo 02.......................................................................................................................30
4.4.3. Exemplo 03.......................................................................................................................31
Anexo 01 (Catalogo de Fontes)...............................................................................................32
1. Catalogo de Fontes padro DPL....................................................................................32
2. Catalogo de Fontes padro EPL....................................................................................32
3. Catalogo de Fontes padro IPL.....................................................................................32
4. Catalogo de Fontes padro ZPL....................................................................................32
Arquivo:244243836.doc Impresso em: 15/09/2014 3/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
1. Consideraes Iniciais
Este documento no tem o objetivo de ensinar ao leitor a programao "ADVPL,
nem a lgica de programao, pois neste caso presumimos que o leitor j tenha este
conhecimento.
Neste documento sero apresentadas todas as funes necessrias para a gerao
e impresso de etiquetas com ou sem cdigo de barras para impressoras trmicas.
Atualmente as funes para impresso trmica englobam as linguagem DPL, EPL,
IPL e ZPL, sendo estas linguagens totalmente transparentes para o programador. Sendo
assim o programador em questo no precisa ser um conhecedor das linguagem de
programao para impressoras trmicas descritas acima, desenvolvidas por seus
fabricantes.
Onde:
DP a linguagem de programao datamax;
!P a linguagem de programao eltron;
IP a linguagem de programao intermec;
"P a linguagem de programao zebra.
Arquivo:244243836.doc Impresso em: 15/09/2014 4/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
2. Sentido de Impresso
O sentido de impresso no o mesmo para todas impressoras trmicas. Alguns
fabricantes de impressoras diferem o sentido de impresso um do outro, tendo suas
prprias justivicativas, podendo elas ser desenpenho, qualidade ou at facilidade para o
desenvolvedor.
Quando falamos em sentido de impresso, tambm importante falarmos do
ponto de origem (0,0) no possicionamento do desenho de imagens, linhas e textos, pois
isto tambm definido pelo fabricante tendo as mesmas regra justificadas por ele.
Abaixo so apresentadas os sentidos de impresso e ponto de origem para os
padres de programao e impressoras homologadas.

2.1.Padro Zebra e Eltron (Programao ZPL e EPL)
A figura 01 ilustra o eixo carteziano de trabalho, o ponto de origem do eixo
carteziano e principalmente o ponto de origem para inicio do texto ou figura, a qual fica
no canto superior esquerdo ( de cima para baixo) conforme figura 01.
Figura 01 - Apresentao do sentido de impresso da imagem na etiueta padro !ebra e eltron.
Arquivo:244243836.doc Impresso em: 15/09/2014 5/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
OBS: Alguns modelos de impressoras ELTRON, possuem o alinhamento da folha de
etiqueta centralizado, por isso deve-se considerar o ponto de impresso da posio+a
margem.
2.2. Padro "atama# (Programao DPL )
Note na figura 02 que o quadrante do eixo carteziano do padro datamax
diferente do quadrante do eixo carteziano da intermec e zebra. Tambm importante
observar que o ponto de origem para o desenho do texto ou figura inicia no canto inferior
esquerdo do texto ou figura (ou seja, de baixo para cima do texto ou figura),
diferentemente do padro zebra e intermec.
Figura 02 $ Apresentao do sentido de impresso da imagem na etiueta padro datama#.
Arquivo:244243836.doc Impresso em: 15/09/2014 6/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
2.%. Padro &nterme' (Programao IPL)
Note que o quadrante do eixo carteziano do padro intermec diferente do
quadrante do eixo carteziano da datamax e da zebra. Porm importante observar que o
ponto de origem para o desenho do texto ou figura inicia no canto superior esquerdo do
texto ou figura ( ou seja, a impresso do texto ou figura se d de cima para baixo, a
partir de sua origem), igual o padro zebra e diferente do padro datamax.
Figura 0% $ Apresentao do sentido de impresso da imagem na etiueta padro &nterme'.
Arquivo:244243836.doc Impresso em: 15/09/2014 7/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
3. Funes
Nesta sesso sero descritos as funes necessrias para desenvolver imagens de
etiqueta para impressoras trmicas.
Os parmetros que estiverem entre [], significa que no so OBRIGATRIOS, os
parmetros que estiverem com (*), significa que uso exclusivo ZPL.
%.1. ()*+Printer
Objetivo:
Permite realizar as configures da impressora, as quais permitiro ao
programador determinar as caracteristicas de impresso, definidas pelos parmetros
abaixo.
Sintaxe:
MSCBPRINTER(cModelPrt, cPorta, nDensidade, nTamanho, lSrv, nPorta, cServer, cEnv,
nMemoria, cFila, lDrvWin, cPathSpool)
Par#metros Descrio
[cModelPrt$ String com o modelo de impressora:
%a&ricante Impressoras
Datama' ALLEGRO, ALLEGRO 2, PRODIGY, DMX, DESTINY, URANO, DATAMAX,
OS 214, OS 314, PRESTIGE, ARGOX
!ltron ELTRON, TLP 2722, TLP 2742, TLP 2844, TLP 3742, C4-8
Intermec INTERMEC, 3400-8, 3400-16, 3600-8, 4440-16, 7421C-8
"e&ra S300, S400, S500-6, S500-8, Z105S-6, Z105S-8, Z160S-6, Z160S-
8, Z140XI, S600, Z4M, Z90XI, Z170XI, ZEBRA
.
(cPorta$ String com a porta
(nDensidade$ Nmero com a densidade referente a quantidade de pixel por mm. Este
parmetro s deve ser informado quando o parmetro cModelPrt no for
informado, pois cModelPrt o atualizar automaticamente. A utilizao
deste parmetro dever ser usado quando no souber o modelo da
impressora, a aplicao entendera que se trata de uma impressora
Zebra. O tamanho da etiqueta ser necessrio quando a mesma no for
continua.
(nTaman)o$ Tamanho da etiqueta em Milmetros. Lembrando que este tamanho s
deve ser passado se a etiqueta for continua.
(lSr*$ Se .t. imprime no server,.f. no client. O seu valor padro .f.
(nPorta$ Nmero da porta de outro server
(cSer*er$ endereo IP de outro server
(c!n*$ environment do outro server
(nMemoria$ Nmero com bloco de memria da impressora trmica. Caso seja
enviada muita informao para a impressora, a fim que esta venha
imprimir (sobrecarregando a memria), pode ocorrer perda de dados.
Por outro lado, se for informado blocos muito pequenos de memria,
implicar na diminuio da performance da impressora. Sendo assim o
Arquivo:244243836.doc Impresso em: 15/09/2014 8/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
programador dever fazer uma avaliao para ver o que melhor se
adequa a sua situao.
(c%ila$ Diretrio onde ser gravada as filas
(lDr*+in$ Indica se ser utilizando os drivers do windows para impresso
(cPat)Spool$ Caminho do diretrio onde sero geradas as filas de impresso

Exemplo usando o padro de programao Zebra (famlia ZPL
Local nX
Local cPorta
/*
configuracoes mais utilizadas de porta
cPorta := "COM2:9600,n,8,1"
cPorta := "COM2:9600,n,8,2"
cPorta := "COM2:9600,n,7,1"
cPorta := "COM2:9600,n,7,2"
cPorta := "COM2:9600,e,8,1"
cPorta := "COM2:9600,e,8,2"
cPorta := "COM2:9600,e,7,1"
cPorta := "COM2:9600,e,7,2"
cPorta := "LPT1"
*/
cPorta := "COM1:9600,N,8,1"
MSC,P-I.T!-/0S1223405cPorta5 5 62 57f78
For nx:=1 to 3
MSCBBEGIN(1,6)
MSCBSAY(10,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, Strzero(nX,10), "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBEND()
Next
MSCBCLOSEPRINTER()
%.2. ()*+*losePrinter
Objetivo:
Finaliza a conexo com a impressora.
Sintaxe:
MSCBClosePrinter()
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
For nx:=1 to 3
MSCBBEGIN(1,6)
MSCBSAY(10,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, Strzero(nX,10), "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBEND()
Next
MSC,C9S!P-I.T!-/8
Arquivo:244243836.doc Impresso em: 15/09/2014 9/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas

%.%. ()*++egin
Objetivo:
Inicializa a montagem da imagem para cada etiqueta.
Sintaxe:
MSCBBEGIN(nxQtde,nVeloc,nTamanho,lSalva)
Par#metros Descrio
(n:tde$ Quantidade de cpias
(n;eloc$ Velocidade (1,2,3,4,5,6) polegadas por segundo
(nTaman)o$ Tamanho da etiqueta em Milmetros.
(lSal*a$ Varivel utilizada somente para definio de forms. O valor default da
varivel .f.
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
For nx:=1 to 3
MSC,,!<I./=5>8
MSCBSAY(10,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, Strzero(nX,10), "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBEND()
Next
MSCBCLOSEPRINTER()
%.,. ()*+End
Objetivo:
Finaliza a montagem da imagem, que foi inicializada por um "MSCBBegin( ).
Sintaxe:
MSCBEND()
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
For nx:=1 to 3
MSCBBEGIN(1,6)
MSCBSAY(10,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, Strzero(nX,10), "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSC,!.D/8
Next
MSCBCLOSEPRINTER()
Arquivo:244243836.doc Impresso em: 15/09/2014 10/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
%.-. ()*+)a.
Objetivo:
Imprime uma string.
Sintaxe:
MSCBSAY(nXmm, nYmm, cTexto, cRotacao, cFonte, cTam, lReverso, lSerial, cIncr, lZerosL,
lNoAlltrim)
Par#metro Descrio
n?mm Posio X em Milmetros
n@mm Posio Y em Milmetros
cTe'to String a ser impresso ou itens especificando uma varivel "@.(Ex: "@2).
Obs: quando for especificado uma varivel, o seu contedo
dever ser apenas o caractere "@ seguido de um nmero, "@1
ou "@2 e assim por diante. Vide item 3.15.

c-otao String com o tipo de Rotao (N,R,I,B):
Instruo Descrio
N Normal
R Cima para baixo
I Invertido
B Baixo para cima
c%onte String com os tipos de Fonte:
Padro Tipos
Zebra (A,B,C,D,E,F,G,H,0) 0(zero)- fonte escalar
Datamax (0,1,2,3,4,5,6,7,8,9) 9 - fonte escalar
Eltron (0,1,2,3,4,5)
Intermec (0,1,7,20,21,22,27)
cTam String com o tamanho da Fonte
A(l-e*erso$ Imprime em reverso quando tiver sobre um box preto
(lSerial$ Serializa o cdigo
(cIncr$ Incrementa quando for serial positivo ou negativo
A(l"eros$ Coloca zeros a esquerda no numero serial
(l.oAlltrim$ Permite brancos a esquerda e direita
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
For nx:=1 to 3
MSCBBEGIN(1,6)
MSC,SA@/=252>50C9DI<9050.050A0502=1522408
MSC,SA@/BB52C5 StrDero/n?5=285 0.05 0205 02BE52B108
MSC,SA@/215=F50IMP-!SS9-A "!,-A S12234050.05 0205 02E252B208
MSCBEND()
Next
MSCBCLOSEPRINTER()
Arquivo:244243836.doc Impresso em: 15/09/2014 11/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
%./. ()*+)a.+ar
Objetivo:
Imprime cdigo de barras.
Sintaxe:
MSCBSAYBAR(nXmm, nYmm, cConteudo, cRotacao, cTypePrt, nAltura, lDigVer, lLinha,
lLinBaixo, cSubSetIni, nLargura, nRelacao, lCompacta, lSerial, cIncr,
lZerosL)
Par#metro Descrio
n?mm Posio X em Milmetros
n@mm Posio Y em Milmetros
cConteudo String a ser impressa especificando uma varivel "@ ou array somente
quando o parmetro cTypePrt for igual MB07.
Definio do ArraGH
cConteudo :={{"01","07893316010411"},;
{"10","0000970100"+MSC,=E4,/8+"1"+MSC,=E4C/8},;
{"37","0004"},;
{"21","000494"}}
A possio 1 do array (ex: "01) informa o AI utilizadado (que
ser visto no item 3.6.1. "Utilizao do cdigo de barras 128).
J a possio 2 do array (ex: "07893316010411) o contedo do
AI.

c-otao String com o tipo de Rotao:
Instruo Descrio
N Normal
R Cima para baixo
I Invertido
B Baixo para cima
cTGpePrt String com o Modelo de Cdigo de Barras:
Instruo Modelo de CIdigo de ,arras
MB01 Interleaved 2 of 5
MB02 Code 39
MB03 EAN 8
MB04 EAN 13
MB05 UPC A
MB06 UPC E
MB07 CODE 128
9&sH Caso o leitor queira utilizar o modelo do padro de programao da
impressora, o mesmo dever consultar documentao do fabricante.
(nAltura$ Altura do cdigo de Barras em Milmetros
A( lDig*er$ Imprime dgito de verificao
(lin)a$ Imprime a linha de cdigo
A(lin,ai'o$ Imprime a linha de cdigo acima das barras
(cSu&SetIni$ Utilizado no code128
(nargura$ Largura da barra mais fina em pontos default 3
(n-elacao$ Relao entre as barras finas e grossas em pontos default 2
(lCompacta$ Parmetro fora de uso.
Arquivo:244243836.doc Impresso em: 15/09/2014 12/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
(lSerial$ Serializa o cdigo
(cIncr$ Incrementa quando for serial positivo ou negativo
(l"eros$ Coloca Zeros a esquerda do contedo. Este parmetro s valido quando
lSerial estiver ativado (.t.).

Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBLOADGRF("SIGA.GRF")
For nx:=1 to 3
MSCBINFOETI("Exemplo 1","MODELO 1")
MSCBBEGIN(1,6)
MSCBBOX(02,01,76,35)
MSCBLineH(30,05,76,3)
MSCBLineH(02,13,76,3,"B")
MSCBLineH(02,20,76,3,"B")
MSCBLineV(30,01,13)
MSCBGRAFIC(2,3,"SIGA")
MSCBSAY(33,02,'PRODUTO',"N","0","025,035")
MSCBSAY(33,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, Strzero(nX,10), "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSC,SA@,A-/EB5EE5StrDero/n?5=2850M,2F050C0547B>57%757T757%755E5=8
MSCBEND()
Next
MSCBCLOSEPRINTER()
3.6.1. Utilizao do cdio 12!
O cdigo 128, permite a impresso de todos os 128 caracteres ASCII, incluindo
caracteres alfanumricos maisculos e minsculos, bem como os caracteres de controle.
Alm disso existem alguns caracteres especiais que so de uso instrnseco ao cdigo 128.
O cdigo 128 est dividio em trs subconjuntos: A, B e C dos quais apenas um
est ativo de cada vez. Cada um dos cdigos tem um sentido diferente dependendo do
subconjunto ativo.
No protheus os subconjuntos A, B e C, so representados pelas funes
!S"#$%&'( , !S"#$%&#( e !S"#$%&"( respectivamente.
O sub(onjunto ' possibilita a impresso de todos os caracteres alfanumricos
maisculos, caracteres de controle e caracteres especiais.
O sub(onjunto # possibilita a impresso de todos os caracteres alfanumricos
maisculos, caracteres minsculos, e caracteres especiais. Este subconjunto no
possibilita a compactao, porm aceita quase todos os caracteres contidos na tabela
ASCII.
O sub(onjunto " utilizado para duplicar a densidade de cdigos com contedo
apenas NUMRICO e nmero !R de dgitos. Este aumento de densidade obtido pela
Arquivo:244243836.doc Impresso em: 15/09/2014 13/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
impresso de um conjunto de 100 pares de dgitos de 00 a 99 inclusive. Alm disto
permite a impresso de caracteres especiais. Ou seja o "ubcon#unto C utilizado para
compactar o cdigo de barras.
Sendo assim as funes M$C%&'(!) *, M$C%&'(%) * e M$C%&'(C) * permitem
efetuar uma mudana no conjunto dentro do smbolo (cdigo de barras). Todos os
caracteres que seguem o caractere de cdigo (subconjuto A, B ou C) so codificados de
acordo com o conjunto de caracteres correspondente, salvo quando se encontra um outro
caracter do cdigo do caracter shift, que semelhante tecla "shift lock no teclado de
uma mquina de escrever, porm isso tratado internamente nas funes de gerao de
cdigo de barras.
A funo !S"#$%&'( modifica a codificao para o conjunto de caracteres A.
A funo !S"#$%&#( modifica a codificao para o conjunto de caracteres B.
A funo !S"#$%&"( modifica a codificao para o conjunto de caracteres C.
O caractere de mudana (shift) permite uma altero no conjunto de caracteres
para o caracter que o segue imediatamente no smbolo. Os caracteres subsequentes
revertem para o conjunto de caracteres ativo anterior ao caracter de mudana. O carctere
shift opera somente entre os subconjuntos A e B. No possvel mudar para o
subconjunto C, nem mudar a partir dele. O caractere shift semelhante tecla "shift no
teclado de uma mquina de escrever. A funo no protheus para utilizao do caractere
de "shift !S"#$%&S)ift( .
Existe tambm, o caractere FNC 1, usado como separador quando esto
concatenados vrios AIs e seus campos de dados quando os AIs so variveis,
transmitido como caractere GS. O GS no protheus representado pela funo
MsCB128GS( ). Os AIs sero discutidos no item 3.6.2.
Lembrando ao leitor que o mesmo no dever se preocupara com a funo
MSCB128Shift() e MSCB128GS(), pois as mesmas so tratadas internamente na gerao
do cdigo de barras. O leitor dever somente se preocupar em seguir alguns critrios
apresentados no exemplo 02 do item 3.6.
3.6.2. I"#$%IFIC&'() "# &*+IC&'() ,&is-
O smbolo UCC/EAN-128 uma simbologia extremamente flexvel. Permite a
representao de dados de comprimento varivel e possibilita codificar vrias informaes
em um smbolo do cdigo de barras. Isso se denomina concatenao. Este tipo de cdigo
de barras iniciado por um caractere "START indicando a tabela - code "A, "B ou "C
vistos anteriormente e que permite a identificao de 128 caracteres ASCII, seguido do
caractere "FNC1, ex: "START (Code C) "FNC1. Este caractere duplo inicial no visvel
para as pessoas, mas deve estar no incio das barras para que seja possvel o
reconhecimento e tratamento da estrutura da simbologia: os Indicadores de Aplicao,
caractere separador, Dgito Verificador e Stop.
Os Als so cdigos que anunciam com exclusividade os dados que os sucedem,
seu significado e seu comprimento. Os dados que aparecem aps um AI podem abranger
caracteres alfabticos e/ou numricos de qualquer comprimento, chegando em alguns
Arquivo:244243836.doc Impresso em: 15/09/2014 14/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
formatos at trinta caracteres. Os campos de dados tm comprimento fixo ou varivel,
dependendo do AI.
Os atributos de dados relacionam-se com um item: um item comercial ou de
transporte, e no possuem significado caso sejam isolados. Podem ser representados no
UCC/EAN-128 usando-se AIs. Existe uma faixa de AIs para medidas de itens comerciais,
nos quais o peso descrito o peso lquido, e uma faixa de AIs para medidas de unidades
de transportes, denominadas unidades logsticas, nas quais o peso descrito o peso
bruto.
A tabela a seguir foi extrada da lista completa como exemplo dos AIs. Observe
que um deles representa um significado - "contedo , uma senha - "ttulo de dados
para sua identificao na aplicao; e um formato para a representao dos dados n
(numricos) ou em an (alfanumricos), fixos ou variveis.
A representao de AIs numa mesma linha do cdigo de barras possvel desde
que respeitadas as regras de concatenao:
Mximo de 48 caracteres numa mesma seqncia de dados (incluindo os AIs e
caracter(es) separador(es) se tiver(em), mas excluindo os caracteres auxiliares e o
dgito verificador);
Mximo de 165mm do smbolo, incluindo as margens de silncio (para uma
mesma linha de cdigo de barras);
Uso do caractere separador "FNC1 depois de um AI de dado varivel, quando
concatenado com outro AI. A tabela a seguir identifica todos os Ais reconhecidos
como tendo formato de dados fixos.
9s Identificadores de Aplicao Jue no aparecem nesta ta&ela de*ero
rece&er caractere separador /%.C=85 Juando anteceder JualJuer outro AI numa
concatenao7 9 caractere separador de dados %.C= no aparece na representao
humano-legvel, mas dever estar contido nas barras, a menos que o AI varivel for o
ultimo representado no cdigo, pois neste caso o caractere "STOP determina o final de
representao.
Ta&ela de AIKs disponi&iliDada pela !A.H
AI TLtulo Completo %ormato
00 *0digo de )1rie de 2nidade Log3sti'a n2 4n15
01 67mero 8lobal de item *omer'ial n24n1,
02 89&6 de itens 'omer'iais 'ontidos em uma unidade log3sti'a n24n1,
10 67mero de +at': ou de lote n2 4 an..20
11; "ata de Produo (AA(("") n24n/
12; "ata de <en'imento= Pagamento (AA(("") n24n/
1%; "ata de Embalagem (AA(("") n24n/
1-; "ata de "urabilidade (3nima (AA(("") n24n/
1>; "ata de "urabilidade (?#ima (AA(("") n24n/
20 <ariante do Produto n24n2
21 67mero de )1rie n24an20
22 "ados )e'und?rios para Produtos Espe'3@i'os do )etor de )a7de n24an..2A
2%B 67mero de lote (2so 9ransit0rio) n%4n..1A
2,0 &denti@i'ao Adi'ional do Produto Atribu3da pelo Fabri'ante n%4an..%0
2,1 67mero de *liente n%4an..%0
Arquivo:244243836.doc Impresso em: 15/09/2014 15/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
2-0, 67mero de )1rie )e'und?rio n%4an..%0
AI TLtulo Completo %ormato
2-1, Ce@erDn'ia da Entidade de Erigem n%4an..%0
%0 *ontagem <ari?Fel n24n..5
%1-%/G (edidas *omer'iais e Log3'as n,4n/
%%>G Huilos por metro uadrado n,4n/
%> *ontagem de itens *omer'iais *ontidos numa 2nidade Log3sti'a n24n..5
%A0G <alor a Pagar $ ?rea monet?ria isolada n,4n..1-
%A1G <alor a Pagar $ 'om o '0digo &)E de moeda n,4n%4n..1-
%A2n <alor a Pagar por um item de medida Fari?Fel $ ?rea monet?ria isolada n,4n..1-
%A%n <alor a Pagar por um item de medida Fari?Fel $ 'om o '0digo &)E de moeda n,4n%4n..1-
,00 67mero de Erdem de *ompra do *liente n%4an..%0
,01 67mero de *onsignao n%4an..%0
,02 67mero de &denti@i'ao do "espa':o n%4n1>
,0% *0digo de Cota n%4an..%0
,10
67mero de Lo'ali!ao 8lobal EA6=2** I"espa':ar para $ Entregar paraJ$ destino
imediato n%4n1%
,11 67mero 8lobal de Lo'ali!ao EA6=2** IFaturar paraJ I *obrar deJ n%4n1%
,12 67mero 8lobal de Lo'ali!ao EA6=2** I *omprado deJ n%4n1%
,1% 67mero 8lobal de Lo'ali!ao EA6=2** I"espa':ar para $ Entregar para I$ destino @inal n%4n1%
,1, &denti@i'ao de Lo'al F3si'o 67mero 8lobal EA6=2** de Lo'ali!ao n%4n1%
,1- 67mero 8lobal de Lo'ali!ao EA6=2** da Parte ue @atura n% 4 n1%
,20
*0digo Postal dentro de uma 7ni'a Autoridade Postal
I"espa':ar para - Entregar paraJ n%4an20
,21
*0digo Postal 'om *0digo isso de Pa3s 'om % "3gitos
I "espa':arJ para - Entregar para I n%4n%4anA
,22 Pa3s de Erigem de um &tem *omer'ial $ Padro &)E %1// n%4n%
5001
Produtos em Colo $ LarguraK *omprimentoK "iLmetro do
*entroK "ireo e MunNes n,4n1,
5002 &denti@i'ador EletrOni'o em )1rie para 9ele@ones *elulares (0Feis n,4an..20
500% &denti@i'ador 8lobal de AtiFo Cetorn?Fel n,4n1,4an..1/
500, &denti@i'ador 8lobal de AtiFo &ndiFidual n,4an..%0
500- Preo por 2nidade de (edida n,4n/
500/ &denti@i'ao do *omponente de um &tem *omer'ial n,4n1,4n24n2
500> 67mero de *onta de +an'o &nterna'ional n,4an..%0
5015 67mero de Celao de )erFio 8lobal n,4n..15
5020 67mero de Ce@erDn'ia de +oleto de Pagamento n,4an..2-
5100 *0digo Estendido de *upom $ 6)*4 *0digo de o@erta (2)A=*anad?) n,4n14n-
5101
*0digo Estendido de *upom $ 6)*4 *0digo de o@erta 4 @inal do '0digo de o@erta
(2)A=*anad?) n,4n14n-4n,
5102 *0digo Estendido de *upom $ 6)* (2)A=*anad?) n,4n14 n1
A0PPP &n@ormao *ombinada (utuamente entre Par'eiros *omer'iais (&n'luindo FA*9 "&s) n2 4na..%0
A1-AA &n@ormao interna de Empresa n24na..%0
Tabela 01 - Tabela de AIs
Onde:
1. Quando forem necessrios apenas ano e ms, DD deve ser preenchido com 00.
2. Mais um dgito para a indica!o de comprimento.
". #stes $%s compreendem & dgitos. 's trs primeiros dgitos identi(cam o o)*etivo do $+, e o ,uarto dgito
indica a posi!o do
ponto decima%.
---. ' ttu%o do dado vigente deve ser especi(cado pe%o emissor da informa!o.
Exemplo do (*digo $%& usando o padro de programao ZPL:
Arquivo:244243836.doc Impresso em: 15/09/2014 16/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta,,35)
MSCBBEGIN(1,6)
MSCBBOX(02,01,76,34,1)
aConteudo :={{"01","07893316010411"},;
{"10","0000970100"+MSC,=E4,/8+"1"+MSC,=E4C/8},;
{"37","0004"},;
{"21","000494"}}
MSC,SA@,A-/245=25aConteudo50.050M,2F05=257%757T757%750C05E5=57%78
MSCBEND()
MSCBCLOSEPRINTER()
.oteH O contedo do tipo array.
%.>. ()*++o#
Objetivo:
Imprime um box.
Sintaxe:
MSCBBOX(nX1mm, nY1mm, nX2mm, nY2mm, nExpessura, cCor)
Par#metro Descrio
n?=mm Posio X1 em Milmetros
n@=mm Posio Y1 em Milmetros
n?Emm Posio X2 em Milmetros
n@Emm Posio Y2 em Milmetros
(n!spessura$ Numero com a espessura em pixel
A(cCor$ String com a Cor Branca ou Preta ("W" ou "B")

Exemplo usando o padro de programao Zebra (famlia ZPL:
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBBEGIN(1,6)
MSC,,9?/2E52=5F>5B18
MSCBEND()
MSCBCLOSEPRINTER()
%.5. ()*+LineQ
Objetivo:
Arquivo:244243836.doc Impresso em: 15/09/2014 17/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
Imprime uma linha horizontal.
Sintaxe:
MSCBLineH(nX1mm, nY1mm, nX2mm, nExpessura, cCor)
Par#metro Descrio
n?=mm Posio X1 em Milmetros
n@=mm Posio Y1 em Milmetros
n?Emm Posio X2 em Milmetros
(n!spessura$ Numero com a espessura em pixel
A(cCor$ String com a Cor Branca ou Preta ("W" ou "B")

Exemplo usando o padro de programao Zebra (famlia ZPL:
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBBEGIN(1,6)
MSC,ineM/B25215F>5B8
MSC,ineM/2E5=B5F>5B50,08
MSCBEND()
MSCBCLOSEPRINTER()
%.A. ()*+Line<
Objetivo:
Imprime uma linha vertical.
Sintaxe:
MSCBLineV(nX1mm, nY1mm, nY2mm, nExpessura, cCor)
Par#metro Descrio
n.1mm Posio R1 em (il3metros
n/1mm Posio S1 em (il3metros
n/2mm Posio R2 em (il3metros
[n#spessura0 6umero 'om a espessura em pi#el
1[cCor0 )tring 'om a *or +ran'a ou Preta (TUT ou T+T)
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBBEGIN(1,6)
MSC,ine;/B252=5=B8
MSCBEND()
MSCBCLOSEPRINTER()
Arquivo:244243836.doc Impresso em: 15/09/2014 18/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
%.10. ()*+Load8ra@
Objetivo:
Carrega uma imagem para memria da impressora.
Sintaxe:
MSCBLOADGRF(cImagem)
*ar2metro "escrio
cImaem 6ome do aruiFo ue ser? 'arregadoK in'lusiFe o pat: 4 nome 'ompleto 4 e#tenso
Observa+es:
Para o padro Zebra, o arquivo do grfico (cImagem) tem que ser do tipo GRF,
gerado atravs de um PCX ou TIF no software fornecido pelo fabricante da zebra.
Para o padro Intermec, o arquivo do grfico (cImagem) tem que ser do tipo UDC,
gerado atravs de um BMP ou TIF(no compactado) no software fornecido pelo fabricante
da intermec.
Para o padro Datamax, o arquivo do grfico pode ser do tipo BMP, PCX, no
sendo necessrio ser convertido.
Para o padro Eltron, o arquivo do grfico tem que ser do tipo PCX, no sendo
necessrio ser convertido.
Exemplo do (*digo $%& usando o padro de programao ZPL:
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSC,9AD<-%/0SI<A7<-%08
MSCBBEGIN(1,6)
MSCBGRAFIC(2,3,"SIGA")
MSCBEND()
MSCBCLOSEPRINTER()
Arquivo:244243836.doc Impresso em: 15/09/2014 19/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
%.11. ()*+8rap:i'
Objetivo:
Imprime grfico que est armazenado na memria da impressora.
Sintaxe:
MSCBGRAFIC(nXmm, nYmm, cArquivo, lReverso)
*ar2metro "escrio
$.mm Posio R em (il3metros
$/mm Posio S em (il3metros
c&r3ui4o 6ome do gr?@i'o ue @oi 'arregado na mem0ria da impressora (no 'olo'ar a e#tenso
do aruiFo)
1[l5e4erso0 &mprime em reFerso uando tiFer sobre um bo# preto


Exemplo usando o padro de programao ZPL:
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBLOADGRF("SIGA.GRF")
MSCBBEGIN(1,6)
MSC,<-A%IC/E5B50SI<A08
MSCBEND()
MSCBCLOSEPRINTER()
%.12. ()*+*:V)tatus
Objetivo:
Seta ou visualiza o controle de status do sistema com a impressora.
Sintaxe:
MSCBCHKStatus(lStatus)
Par#metro Descrio
(lStatus$ Lgica ativa/desativa o controle. Seu valor default .t.

Observa+es:
Com o status ativado, sempre que a aplicao enviar qualquer informao para a
impressora, ser analisado o status, caso esteja com o buffer cheio, sem papel ou sem
ribbon, o sistema aguardara at que os itens anteriores estejam solucionados. Caso haja
uma incompatibilidade com o sistema operacional ou uma configurao inadequada, o
mesmo poder travar por no conseguir efetuar uma comunicao correta, caso isto
ocorra, desative esta opo.
Arquivo:244243836.doc Impresso em: 15/09/2014 20/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSC,CMNSTATOS/7t78
MSCBBEGIN(1,6)
MSCBLineV(30,01,13)
MSCBEND()
MSCBCLOSEPRINTER()
%.1%. ()*+&n@oEti
Objetivo:
Grava informaes para gerenciamento do MSCBSpool.
Sintaxe:
MSCBInfoEti(cDescr,cFiltro)
Par#metro Descrio
cDescr Descrio que gerar informao no MSCBSpool para identificar a etiqueta.
c%iltro utilizado para realizar filtros no MSCBSpool. Vide documentao
MSCBSpool.
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "LPT1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
For nx:=1 to 3
MSC,I.%9!TI/0!'emplo =050M9D!9 =08
MSCBBEGIN(1,6)
MSCBSAY(05,05,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBEND()
Next
MSCBCLOSEPRINTER()
Arquivo:244243836.doc Impresso em: 15/09/2014 21/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
%.1,. ()*+Urite
Objetivo:
Permite enviar para porta uma linha de programao nativa da Impressora.
Sintaxe:
MSCBWrite(cConteudo)
Par#metro Descrio
cConteudo Lin:a de programao natiFa da impressora.

Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBBEGIN(1,6)
MSC,+rite/PQ%?PA-AM!T-9S <!-AIS Q%SR8
MSC,+rite/PQ=E2R8
MSC,+rite/PQMB25B2R8
MSC,+rite/PQP-AR8
MSC,+rite/PQP:=25E55.R8
MSC,+rite/PQ%?C9.T!OD9 DA !TI:O!TAQ%SR8
MSC,+rite/PQ%2=5=Q<,E125C25=2Q%SR8
MSC,+rite/PQ%2B1562QAD.5=45=2Q%DMicrosiga Software S/AQ%SR8
MSCBEND()
MSCBCLOSEPRINTER()
%.1-. ()*+<ar
Objetivo:
Cria variveis para serem utilizadas nos forms (imagem) da etiqueta. Sendo
assim podemos criar para cada um dos campos (cdigo de barras e textos) uma varivel
correspondente. Normalmente este recurso utilizado somente em layouts variveis, ou
seja, em campos que so alterados constatemente.
O uso de variveis permite ao programador criar um layout padro (form) o qual
ser enviado para a impressora trmica, e depois o mesmo somente enviar as alteraes
das variveis, diminuindo a quantidade de dados que sero carregados na impressora.
Isto far com que a impressora use uma quantidade menor de memria, podendo com
isto ter uma diminuio de erros provenientes do buffer de impresso e um aumento de
performance (velocidade) na impresso.
Sintaxe:
MSCBVar(cVar,cDados)
Arquivo:244243836.doc Impresso em: 15/09/2014 22/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
Par#metro Descrio
cVar Nome da varivel. Lembrando que o mesmo dever ser incremental e
sempre inicializar com "@.( Exemplo: "@1)
cdados Contedo da varivel
Exemplo usando o padro de programao Zebra (famlia ZPL:
Local nX
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , ,.f. )
MSCBLOADGRF("SIGA.GRF")
MSCBBEGIN(2,6,nil,.T.)
MSCBBOX(02,01,76,35)
MSCBLineH(30,05,76,3)
MSCBLineH(02,13,76,3,"B")
MSCBLineH(02,20,76,3,"B")
MSCBLineV(30,01,13)
MSCBGRAFIC(2,3,"SIGA")
MSCBSAY(33,02,'PRODUTO',"N","0","025,035")
MSCBSAY(33,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, "@1", "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBSAYBAR(23,20,"@2" ,"N" ,"C" ,8.36 ,.F. ,.T. ,.F. , ,2 ,1 ,.F.,.f.,"1",.T.)
MSCBEND()
For nx:=1 to 3
MSCBINFOETI("PRODUTO","MODELO 1")
MSCBBEGIN(10,,,.F.)
MSC,;A-/0S=05Str"ero/n?5=288
MSC,;A-/0SE05Str"ero/n?5=288
MSCBEND()
Next
MSCBCLOSEPRINTER()
9&ser*ao: Note no exemplo acima, que o primeiro bloco inicializado com MSCBBEGIN
e finalizado com MSCBEND constroi o layout da etiqueta (form). J o loop "For imprime 3
etiquetas utilizando as variveis que atualizam o cdigo do produto e o cdigo de barras,
devinido com a varivel "@1 e "@2 respectivamente.
Arquivo:244243836.doc Impresso em: 15/09/2014 23/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
6. #7emplos
,.1. Padro "atama#
6.1.1. #7emplo 81
User Function ExDPL1()
Local nX
Local cPorta := "COM1:9600,n,8,2"
MSCBPRINTER("ALLEGRO",cPorta, , ,.f. )
MSCBLOADGRF("SIGA.BMP")
For nx:=1 to 3
MSCBINFOETI("Exemplo 1","MODELO 1")
MSCBBEGIN(1,4)
MSCBBOX(02,01,76,34,1)
MSCBLineH(30,30,76,1)
MSCBLineH(02,23,76,1)
MSCBLineH(02,15,76,1)
MSCBLineV(30,23,34,1)
MSCBGRAFIC(2,26,"SIGA")
MSCBSAY(33,31,'PRODUTO',"N","2","01,01")
MSCBSAY(33,27,"CODIGO","N","2","01,01")
MSCBSAY(33,24, Strzero(nX,10), "N", "2", "01,01")
MSCBSAY(05,20,"DESCRICAO","N","2","01,01")
MSCBSAY(05,16,"IMPRESSORA ALLEGRO 2 BR","N", "2", "01,01")
MSCBSAYBAR(22,03,Strzero(nX,10), , ,8.36,.F.,.T.,.F.,,3,2)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
6.1.2. #7emplo 82
User Function EXDPL2()
Local cPorta
cPorta := "COM1:9600,N,8,2"
MSCBPRINTER("ALLEGRO",cPorta, ,35 ,.f.)
MSCBBEGIN()
MSCBBOX(02,01,100,30)
aConteudo :={{"01","07893316010411"},;
{"10","0000970100"+MSCB128B()+"1"+MSCB128C()},;
{"37","0004"},;
{"21","000494"}}
MSCBSAYBAR(08,10,aConteudo,"N","MB07",10,.F.,.T.,nil,'C',3,2,.f.)
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 24/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
6.1.3. #7emplo 83
User Function ExDPL3()
Local nX
Local cPorta := "COM1:9600,n,8,2"
MSCBPRINTER("ALLEGRO",cPorta, , ,.f. )
MSCBLOADGRF("SIGA.BMP")
MSCBBEGIN(1,4,,.t.)
MSCBBOX(02,01,76,34,1)
MSCBLineH(30,30,76,1)
MSCBLineH(02,23,76,1)
MSCBLineH(02,15,76,1)
MSCBLineV(30,23,34,1)
MSCBGRAFIC(2,26,"SIGA")
MSCBSAY(33,31,'PRODUTO',"N","2","01,01")
MSCBSAY(33,27,"CODIGO","N","2","01,01")
MSCBSAY(33,24, "@1", "N", "2", "01,01")
MSCBSAY(05,20,"DESCRICAO","N","2","01,01")
MSCBSAY(05,16,"IMPRESSORA ALLEGRO 2 BR","N", "2", "01,01")
MSCBSAYBAR(22,03,"@2","N","MB07",8.36,.F.,.T.,.F.,,3,2,.F.)
MSCBEND()
For nx:=1 to 10
MSCBINFOETI("PRODUTO","MODELO 1")
MSCBBEGIN(10,,,.F.)
MSCBVAR("@1",StrZero(nX,10))
MSCBVAR("@2",StrZero(nX,10))
MSCBEND()
Next
MSCBBEGIN(1,4,NIL,NIL)
MSCBBOX(02,01,76,34,1)
MSCBLineH(30,30,76,1)
MSCBLineH(02,23,76,1)
MSCBLineH(02,15,76,1)
MSCBLineV(30,23,34,1)
MSCBGRAFIC(2,26,"SIGA")
MSCBSAY(33,31,'TESTE FINAL',"N","2","01,01")
MSCBSAY(33,27,"CODIGO","N","2","01,01")
MSCBSAY(33,24, "000001", "N", "2", "01,01")
MSCBSAY(05,20,"DESCRICAO","N","2","01,01")
MSCBSAY(05,16,"IMPRESSORA ALLEGRO 2 BR","N", "2", "01,01")
MSCBSAYBAR(22,03,"000001","N","MB07",8.36,.F.,.T.,.F.,,3,2,.F.)
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 25/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
,.2. Padro Eltron
6.2.1. #7emplo 81
User Function EXEPL1()
Local nX
Local cPorta:="LPT1"
MSCBPRINTER("ELTRON",cPorta,,,.F.)
MSCBLOADGRF("SIGA.PCX")
For nx:=1 to 3
MSCBINFOETI("Exemplo 1","MODELO 1")
MSCBBEGIN(1,6)
MSCBGRAFIC(04,02,"SIGA")
MSCBBOX(05,01,76,30,2)
MSCBLineH(30,06,71,2)
MSCBLineH(05,12,71,2)
MSCBLineH(05,18,71,2)
MSCBLineV(30,1,12,2)
MSCBSAY(33,02,'PRODUTO',"N","2","1,2")
MSCBSAY(33,07,"CODIGO", "N", "1", "1,1")
MSCBSAY(33,09,Strzero(nX,10), "N","1","1,2")
MSCBSAY(07,13,"DESCRICAO","N","1","1,1")
MSCBSAY(07,15,"IMPRESSORA ELTRON","N","1","1,2")
MSCBSAYBAR(28,19,Strzero(nX,10),'N','MB07',06,.f.,.t.,,,2,2)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
6.2.2. #7emplo 82
User Function EXEPL2()
Local cPorta := "LPT1"
MSCBPRINTER("ELTRON",cPorta,,,.F.)
MSCBBEGIN(1,6)
MSCBBOX(05,03,105,30,2)
aConteudo :={{"01","07893316010411"},;
{"10","0000970100"+MSCB128B()+"1"+MSCB128C()},;
{"37","0004"},;
{"21","000494"}}
MSCBSAYBAR(08,08,aConteudo,'N','MB07',08,,.T.,NIL,"C",2,2,,,,)
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 26/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
6.2.3. #7emplo 83
User Function EXEPL3()
Local cPorta := "LPT1"
Local nX
MSCBPRINTER("ELTRON",cPorta,,,.F.)
MSCBLOADGRF("SIGA.PCX")
For nx:=1 to 1
MSCBINFOETI("ETI TESTE","PEQ")
MSCBBEGIN(3,6,,.t.)
MSCBGRAFIC(04,02,"SIGA")
MSCBBOX(05,01,76,30,2)
MSCBLineH(30,06,71,2)
MSCBLineH(05,12,71,2)
MSCBLineH(05,18,71,2)
MSCBLineV(30,1,12,2) //Monta Linha Vertical
MSCBSAY(33,02,'PRODUTO',"N","2","1,2")
MSCBSAY(33,07,"CODIGO", "N", "1", "1,1")
MSCBSAY(33 ,09 ,"0000001", "N" , "1" , "1,2",.T. ,.t. ,'+4')
MSCBSAY(07,13,"@1","N","1","1,1")
MSCBSAY(07,15,"IMPRESSORA ELTRON TLP2742","N" ,"1" , "1,2")
MSCBSAYBAR(28,19,"@2" ,'N' ,'MB07' ,06 ,.f. ,.t. , , ,2 ,2)
MSCBEND()
Next
For nx:=1 to 4
MSCBINFOETI("ETI TESTE","PEQ")
MSCBBEGIN(10,,,.F.)
MSCBVAR("@1",StrZero(nX,10))
MSCBVAR("@2",StrZero(nX,10))
MSCBEND()
Next

MSCBINFOETI("ETI TESTE","PEQ")
MSCBBEGIN(3,6)
MSCBGRAFIC(04,02,"SIGA")
MSCBBOX(05,01,76,30,2)
MSCBLineH(30,06,71,2)
MSCBLineH(05,12,71,2)
MSCBLineH(05,18,71,2)
MSCBLineV(30,1,12,2) //Monta Linha Vertical
MSCBSAY(33,02,'PRODUTO',"N","2","1,2")
MSCBSAY(33,07,"CODIGO", "N", "1", "1,1")
MSCBSAY(33,09,"0000001", "N" , "1" , "1,2",.T. ,.F. ,'+4')
MSCBSAY(07,13,"teste da folha de rosto","N","1","1,1")
MSCBSAY(07,15,"IMPRESSORA ELTRON TLP2742","N" ,"1" , "1,2")
MSCBSAYBAR(28,19,"0000001" ,'N' ,'MB07',06 ,.f. ,.t. , ,"C" ,2 ,2 ,.t. )
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 27/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
,.%. Padro &nterme'
6.3.1. #7emplo 81
User Function ExIPL1()
Local nX
Local cPorta := "COM1:19200,E,7,1"
MSCBPRINTER("3600-8",cPorta,,40,.f. )
MSCBLOADGRF("SIGA.UDC")
For nx:=1 to 3
MSCBINFOETI("Exemplo 1","MODELO 1")
MSCBBEGIN(1,5,,NIL)
MSCBBOX(01,02,34,76,1)
MSCBLineV(30,30,76,1)
MSCBLineV(23,02,76,1)
MSCBLineV(15,02,76,1)
MSCBLineH(23,30,34,1)
MSCBGRAFIC(34,02,"SIGA",.T.)
MSCBSAY(32,33,'PRODUTO',"R","2","01,01")
MSCBSAY(29,33,"CODIGO","R","2","01,01")
MSCBSAY(26 ,33,StrZero(nX,10), "R", "2" ,"01,01")
MSCBSAY(22,05,"DESCRICAO","R","2","01,01")
MSCBSAY(19,05,"IMPRESSORA INTERMEC","R", "2", "01,01")
MSCBSAYBAR(12,22,StrZero(nX,10),"R","MB07",8.36,.F.,.T.,.F.,,2,2)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
6.3.2. #7emplo 82
User Function EXIPL2()
Local cPorta := "COM1:19200,N,8,1"
MSCBPRINTER("3600-8",cPorta, ,35 ,.f.)
MSCBBEGIN()
MSCBBOX(02,01,30,100,3)
aConteudo :={{"01","07893316010411"},;
{"10","0000970100"+MSCB128B()+"1"+MSCB128C()},;
{"37","0004"},;
{"21","000494"}}
MSCBSAYBAR(20,08,aConteudo,"R","MB07",10,.F.,.T.,nil,'C',2,1,.f.)
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 28/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
6.3.3. #7emplo 83
User Function ExIPL3()
Local nX
Local cPorta
cPorta := "COM1:19200,E,7,1"
MSCBPRINTER("I3600",cPorta,NIL ,40 ,.f. )
MSCBLOADGRF("SIGA.UDC")
MSCBBEGIN(1,5,,.T.)
MSCBINFOETI("PRODUTO","MODELO 1")
MSCBBOX(01,02,34,76,1)
MSCBLineV(30,30,76,1)
MSCBLineV(23,02,76,1)
MSCBLineV(15,02,76,1)
MSCBLineH(23,30,34,1)
MSCBGRAFIC(34,02,"SIGA")
MSCBSAY(32,33,'PRODUTO',"R","2","01,01")
MSCBSAY(29,33,"CODIGO","R","2","01,01")
MSCBSAY(26,33,"@1", "R", "2", "01,01")
MSCBSAY(22,05,"DESCRICAO","R","2","01,01")
MSCBSAY(19,05,"PARAFUSO 1/4 POLEGADAS","R", "2", "01,01")
MSCBSAYBAR(12,22,"@2","R","MB07",8.36,.F.,.T.,.F.,,2,2)
MSCBEND()
For nx:=1 to 10
MSCBBEGIN(,,,.F.)
MSCBINFOETI("PRODUTO","MODELO 1")
MSCBVAR("@1",StrZero(nX,10))
MSCBVAR("@2","999"+StrZero(nX,7))
MSCBEND()
Next
MSCBINFOETI("PRODUTO","MODELO 1")
MSCBBEGIN(2,6,,NIL)
MSCBBOX(01,02,34,76,1)
MSCBLineV(30,30,76,1)
MSCBLineV(23,02,76,1)
MSCBLineV(15,02,76,1)
MSCBLineH(23,30,34,1)
MSCBGRAFIC(2,26,"SIGA",.T.)
MSCBSAY(32,33,'PRODUTO',"R","2","01,01")
MSCBSAY(29,33,"CODIGO","R","2","01,01")
MSCBSAY(26,33,"000010", "R" , "2" , "01,01",,.t.,"2")
MSCBSAY(22,05,"DESCRICAO","R","2","01,01")
MSCBSAY(19,05,"PARAFUSO 1/4 POLEGADAS","R", "2", "01,01")
MSCBSAYBAR(12,22,"000010","R","MB07",8.36,.F.,.T.,.F.,,2,2,.F.)
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 29/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
,.,. Padro Zebra
6.6.1. #7emplo 81
User Function EXZPL1()
Local nX
Local cPorta
cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , 40 ,.f.)
MSCBLOADGRF("SIGA.GRF")
For nx:=1 to 3
MSCBINFOETI("Exemplo 1","MODELO 1")
MSCBBEGIN(1,6)
MSCBBOX(02,01,76,35)
MSCBLineH(30,05,76,3)
MSCBLineH(02,13,76,3,"B")
MSCBLineH(02,20,76,3,"B")
MSCBLineV(30,01,13)
MSCBGRAFIC(2,3,"SIGA")
MSCBSAY(33,02,'PRODUTO',"N","0","025,035")
MSCBSAY(33,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, Strzero(nX,10), "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBSAYBAR(23,22,Strzero(nX,10),"MB07","C",8.36,.F.,.T.,.F.,,2,1)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
6.6.2. #7emplo 82
User Function EXZPL2()
Local cPorta
cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta,,35)
MSCBBEGIN(1,6)
MSCBBOX(02,01,76,34,1)
aConteudo :={{"01","07893316010411"},;
{"10","0000970100"+MSCB128B()+"1"+MSCB128C()},;
{"37","0004"},;
{"21","000494"}}
MSCBSAYBAR(08,10,aConteudo,"N","MB07",10,.F.,.T.,.F.,"C",2,1,.F.)
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 30/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
6.6.3. #7emplo 83
User Function EXZPL3()
Local cPorta := "COM1:9600,N,8,1"
MSCBPRINTER("S500-8",cPorta, , ,.f. )
MSCBLOADGRF("SIGA.GRF")
MSCBBEGIN(2,6,nil,.T.)
MSCBBOX(02,01,76,35)
MSCBLineH(30,05,76,3)
MSCBLineH(02,13,76,3,"B")
MSCBLineH(02,20,76,3,"B")
MSCBLineV(30,01,13)
MSCBGRAFIC(2,3,"SIGA")
MSCBSAY(33,02,'PRODUTO',"N","0","025,035")
MSCBSAY(33,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, "@1", "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBSAYBAR(23,20,"@2" ,"N" ,"C" ,8.36 ,.F. ,.T. ,.F. , ,2 ,1)
MSCBEND()
For nx:=1 to 3
MSCBINFOETI("PRODUTO","MODELO 1")
MSCBBEGIN(10,,,.F.)
MSCBVAR("@1",StrZero(nX,10))
MSCBVAR("@2",StrZero(nX,10))
MSCBEND()
Next
MSCBBEGIN(2,6,nil,nil)
MSCBBOX(02,01,76,35)
MSCBLineH(30,05,76,3)
MSCBLineH(02,13,76,3,"B")
MSCBLineH(02,20,76,3,"B")
MSCBLineV(30,01,13)
MSCBGRAFIC(2,3,"SIGA")
MSCBSAY(33,02,'PRODUTO',"N","0","025,035")
MSCBSAY(33,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, "1", "N", "0", "032,035")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBSAYBAR(23,20,"00000000002" ,"N" ,"C" ,8.36 ,.F. ,.T. ,.F. , ,2 ,1 )
MSCBEND()
MSCBCLOSEPRINTER()
Return
Arquivo:244243836.doc Impresso em: 15/09/2014 31/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#
Manual de Programao em Impressoras Trmicas
&ne7o 81 ,Cataloo de Fontes-
1. *atalogo de Fontes padro "PL
2. *atalogo de Fontes padro EPL
%. *atalogo de Fontes padro &PL
,. *atalogo de Fontes padro ZPL
Arquivo:244243836.doc Impresso em: 15/09/2014 32/32
TECN!"IA E #I#TE$A# % &I'I#( A)T$A*( E$ C!ETA &E &A&#

You might also like