Você está na página 1de 8

1

Impresso de Cdigo de Barras


Uma abordagem prtica Argox PPLB
por Victory Fernandes e Augusto Frederico
Na Internet esto disponveis diversos componentes para gerao e impresso de Cdigo de Barras utilizando o Delphi e impressoras Laser ou Jato de Tinta. Ao trabalharmos com diferentes impressoras, tivemos alguns problemas quanto resoluo, configurao de impressoras, impresso nas margens das etiquetas, impresso de grandes quantidades de etiquetas e etc, o que comprometia a confiabilidade do sistema. Devido a estes e outros problemas, consideramos que a maneira mais simples, prtica e profissional de se imprimir cdigos de barras, utilizando impressoras especficas para impresso de etiquetas e cdigos de barras. Neste artigo fazemos uma abordagem prtica para as impressoras Argox, que utilizam linguagem de script PPLB, aps este estudo, o leitor estar familiarizado com o conceito geral, e pronto para utilizar qualquer impressora do gnero.

Acessando a impressora
Caso deseje, o usurio da impressora pode utilizar softwares prontos disponveis para download que acompanham a impressora ou so vendidos separadamente. Este no o tipo de abordagem que desejamos aos nossos clientes. O ideal que sejamos capazes de oferecer a funcionalidade de impresso de cdigo de barras por dentro dos nossos programas, utilizando uma interface com a qual o usurio j esteja familiarizado. Para isso necessrio conhecer o formato de comunicao com a impressora. A impressora em questo no requer nenhum tipo de driver especfico para funcionar, bastando que lhe seja passada uma seqncia de comandos ASCII pela porta a qual esta conectada. Sendo assim o acesso pode ser feito at mesmo pelo MS-DOS com um comando do tipo: COPY MEU_ARQUIVO.TXT LPT1 ou COPY MEU_ARQUIVO.TXT COM1

Onde MEU_ARQUIVO.TXT um arquivo de texto comum contendo o script em PPLB que se deseja executar e deve ser enviado para a porta paralela (LPT1) ou serial (COM) Este tipo de abordagem de comunicao facilita, e muito, a implementao, uma vez que a nossa nica preocupao ser conhecer os comandos, utilizando os mtodos padres do Delphi para o envio das strings.

Conhecendo a Linguagem
Os comandos em PPLB obedecem a uma sintaxe geral do tipo: A p1,p2,p3 [p1,p2,p3] Comandos Parmetros Parmetros opcionais

Apesar da impressora disponibilizar uma infinidade de comandos e opes, tais como contadores, criao e armazenamento de formulrios em memria, velocidade de impresso dentre outros. Vamos abordar alguns itens principais: Configurao da Etiqueta Impresso de Textos Impresso de Cdigos de Barras De maneira geral a impressora trabalha com um buffer de impresso onde so armazenados os comandos recebidos, como se a impressora montasse uma imagem virtual da etiqueta a ser impressa, dessa forma, sempre que se deseja imprimir uma etiqueta diferente, necessrio seguir um procedimento geral: Antes de tudo, temos que executar a limpeza do buffer de impresso - Comando N. Aps fixaremos as dimenses da etiqueta bem como o seu gap (espao entre as etiquetas). A altura e o gap, com o Comando Q. Para a largura, utilizamos o Comando q. Com o Comando R definimos as coordenadas do ponto inicial da impresso. Aps esse processo, a impressora estar pronta para receber os comandos relativos a montagem da nova etiqueta Comandos A (Texto) e B (Cdigo de Barras). Uma vez concluda a montagem da etiqueta, com o Comando P determina-se a quantidade de impresso e envia a autorizao para imprimir. Veremos agora a anlise de cada um dos comandos citados separadamente:

Limpeza de Buffer
Antes de passarmos qualquer novo comando de impresso de etiqueta necessrio limpar o buffer de imagem da impressora atravs da passagem do Comando N, que no aceita nenhum parmetro, para evitar que haja sobreposio dos contedos a serem impressos.

Dimenses da Etiqueta
Em seguida definiremos as dimenses da etiqueta. O comando Q encarregado da altura e do espao entre as etiquetas, gap. Para rolo contnuo o gap possu valor igual a 0. Com a seguinte sintaxe: Qp1,p2 p1 comprimento de etiqueta (em pontos*) p2 gap A largura definida pelo comando q, com formato: Qp1 p1 largura (em pontos*). Dimenses Mximas permitidas: Modelo 203 dpi Largura (X) 0 a 811 pixels (101mm) Comprimento(y) 0 a 8728 pixels (1090mm)
Tabela 01. Dimenses Permitidas.

Modelo 300 dpi 0 a 1299 pixels (108mm) 0 a 8728 pixels (727mm)

Caso as dimenses no sejam corretamente fixadas podero ocorrer erros de impresso, tais como: desposicionamento de impresso, impresso de etiquetas em branco, parada na impressora, dentre outros.
* nos modelos 203 dpi, existem 8 pontos(pixels) em cada milmetro linear, nos modelos 300 dpi, existem 12 pontos(pixels) em cada milmetro linear.

Definio dos Eixos


Devemos determinar o ponto inicial da impresso, para isso utilizamos o Comando R para a definio dos eixos X e Y respectivamente.Com sintaxe: Rp1,p2 p1 margem horizontal (X) p2 margem vertical(Y)

Impresso de Textos
Para impresso de textos formatados na etiqueta, utilizamos o Comando A, cuja sintaxe mostrada abaixo: Ap1,p2, p3,p4, p5,p6, p7, TEXTO Onde, p1 Eixo Y em pontos (Vide tabela 1). p2 Eixo X em pontos (Vide tabela 1). p3 Rotao Valor 0 1 2 3
Tabela 02. Rotao valores Permitidos.

Descrio Sem rotao Rotao de 90 Rotao de 180 Rotao de 270

p4

Fonte 1,2,3,4,5 Fontes residentes 1 a 5(realiza exemplo para melhores informaes). A at Z Fontes carregadas na memria. p5 Valor de expanso horizontal do texto (1 a 24). p6 Valor de expanso vertical do texto (1 a 24). p7 Forma de impresso : N(normal); R(reverso). TEXTO Informao a ser impressa. Chamamos a funo texto da seguinte forma: Texto_PPLB(175, //eixo x 20, //eixo y 0, //rotao 3, //tipo fonte 10, //multiplicador horizontal,

10, false, Teste de impresso);

//multiplicador vertical //imprime reverso

A Listagem 01 mostra o retorno do script PPLB aps a chamada feita acima:


N A175,20,0,3,10,10,N,"Teste de Impressao" P1

Listagem 01. formatao de um texto:

Os comandos N e P, indicaro o incio e o trmino da formatao. P tambm indica a quantidade de cpias.

Impresso de Cdigo de Barras


Para impresso de cdigos de barras nos mais diversos formatos, utilizamos o Comando B, cuja sintaxe mostrada abaixo: Bp1,p2, p3,p4, p5,p6, p7,p8, VALOR Onde, p1 Eixo_Y (ver tabela 1) p2 Eixo_X (ver tabela 1) p3 Rotao Valor 1 2 3 4
Tabela 03. Rotao valores permitidos

Descrio Sem rotao Rotao de 90 Rotao de 180 Rotao de 270

p4 Valor 0 1 1E 2 2C 2D 2G 2M 2U 3 3C 9 E30 E32 E35 E80

Tipo do Cdigo de Barras Tipo de Cdigo de Barras Cdigo 128 UCC Cdigo 128(A,B,C automtico) UCC/EAN Intercalado 2 de 5 (ITF,125,Interleaved 2 de 5, intercalado 25 ) Intercalado 2 de 5 com dgito verificador MOD10 Intercalado 2 de 5 com dgito verificador humano legvel German Postcode Matrix 2 de 5 (Matriz 25) UPC intercalado 2 de 5 Cdigo 39 (cdigo 3 de 9) Cdigo 39 com digito verificador Cdigo 93 EAN-13(EAN/JAN-13) EAN-13 2 dgitos adicionais EAN-13 5 dgitos adicionais EAN-8 (EAN-JAN-8) Dgitos Varivel Varivel Varivel Varivel Varivel Varivel Varivel Varivel Varivel Varivel Varivel Varivel Fixo Fixo Fixo Fixo

E82 E85 K P UA0 UA2 UA5 UE0 UE2 UE5 Tipo B2 B3 p5 p6

EAN-8 2 dgitos adicionais EAN-8 5 dgitos adicionais Codabar Postnet UPC-A UPC-A 2 dgitos adicionais UPC-A 5 dgitos adicionais UPC-E UPC-E 2 dgitos adicionais UPC-E 5 dgitos a adicionais Espessura da barra fina(ver tabela 5). Espessura da barra larga(ver tabela 5). Barra Fina x Grossa Fina<Grossa Fina=Grossa 2 x Fina 3 x Fina 4 x Fina

Fixo Fixo Varivel Fixo Fixo Fixo Fixo Fixo Fixo Fixo

Tabela 04. Tipo de Cdigo de Barras

Razo 1:2 a 1:3 2:3:4

Cdigo de Barra Cdigo 39, Codabar, Intercalado 25, Matriz 25, Postnet e German Postcode Cdigo 93, cdigo 128, EAN-8, EAN-13, UPC-A, UPC-E, UCC/EAN e Cdigo 128 UCC

Tabela 05. Tabela de valores de Barras

p7 Altura do cdigo de barras (definido pelo usurio) p8 Forma de impresso : N(normal); R(reverso). VALOR Informao a ser impressa em cdigo de barras //eixo x //eixo y //rotao //tipo cdigo Barra //barra fina //barra larga //altura barra //mostra valor //valor Cdigo

Codigo_Barra_PPLB(20, 20, 0, E80, 3, 3, 41, true, 0123459);

A Listagem 02 mostra o retorno do script PPLB aps a chamada feita acima:


N B20,20,0,E80,3,3,41,B,0123459 P1

Listagem 02. Exemplifica a formatao de um Cdigo de Barras:

Os comandos N e P, indicaro o incio e o trmino da formatao. P tambm indica a quantidade de cpias.

Comandos Finais da Etiqueta


Aps passarmos todos dados para a etiqueta determinamos a quantidade de etiqueta a ser impressa e comando de impresso atravs do Comando P, com sintaxe:

P p1 [,p2] p1 determina a quantidade de cpias, 1 at 65.535. p2 quantidade de cpias de cada etiqueta, 1 at 65.535.

O Programa Exemplo
Veja na Figura 01 a tela do aplicativo demonstrativo criado:

Figura 01.Tela principal do exemplo de utilizao de Impressora de Cdigo de Barras

Este programa exemplifica a impresso de cdigos de barras. Nele podemos: Configurar todos os parmetros de formatao dos comandos Q, q, R, A, B, P. Adicionar e excluir produtos para impresso. Visualizar a codificao em PPLB gerada para impresso das etiquetas. Salvar um arquivo de script PPLB para impresso futura. Abrir um arquivo de script PPLB para impresso. Imprimir cdigos de barras em qualquer impressora paralela compatvel com PPLB. Nele foram implementadas as chamadas s funes de impresso de texto e cdigo de barras, descritas anteriomente, como mostrado:
Function Function Function Function Function Function Function Comando_N: String; Comando_Q(p1, p2: string): String; Comando_q(p1: string): String; Comando_R(p1, p2: string): String; Comando_A(p1, p2, p3, p4,P5,p6,p7,texto:string): String; Comando_B(p1,p2,p3,p4,P5,p6,p7,p8,valor: String): String; Comando_P(p1,p2: string): String;

O programa faz sucessivas chamadas a estas funes, de acordo com a quantidade de produtos contida no componente TListview e a quantidade de etiquetas por produto definida pelo usurio, para gerar o script em PPLB que enviado para o componente TMemo. Uma vez o script em PPLB pronto, utilizamos uma funo de escrita na porta da impressora para enviar os comandos contidos no componente TMemo para a impressora instalada na porta paralela, como mostrado:
procedure DirectPrint(s: String); var PTBlock : TPassThroughData; begin PTBlock.nLen := Length(s); StrPCopy(@PTBlock.Data, s); Escape(printer.handle, PASSTHROUGH, 0, @PTBlock, nil); end; procedure TForm1.Button2Click(Sender: TObject); begin //impressao do codigo de barras if memo1.Lines.Count > 0 then begin Printer.BeginDoc; DirectPrint(memo1.Lines.Text); Printer.EndDoc; end; end;

A PPLB_Unit
As chamadas dos comandos da impressora demonstradas durante o artigo foram feitas utilizando a PPLB_Unit.pas, uma Unit desenvolvida em Delphi de acordo com o manual de referncia da linguagem PPLB para gerao de script utilizado nas impressoras de cdigo de barras Argox. As vantagens de utilizar a PPLB_Unit incluem: Completa abstrao da camada de gerao do script, sendo necessrio apenas fazer chamadas s funes da Unit para os comandos desejados. Velocidade na implementao da comunicao com a impressora Gerao de etiquetas com texto e cdigo de barras de forma muito simples Facilidade na gerao de cdigo PPLB Maiores informaes sobre a PPLB_Unit podem ser obtidas no site do produto em http://www.igara.com.br/produto.php?cod_produto=84

Concluso
Agora que voc est familiarizado com as principais opes das impressoras, fica muito mais fcil partir para implementaes mais elaboradas, que utilizem outros recursos no abordados neste artigo, como opes de contadores, temporizadores, impresso de imagens e logomarcas, impresso de formulrios etc... Maiores informaes sobre impressoras de cdigos de barras, bem como download de manuais podem ser encontradas no site do fabricante em http://www.argox.com. Maiores informaes sobre a PPLB_Unit podem ser obtidas no site do produto em http://www.igara.com.br/produto.php?cod_produto=84

Victory Fernandes desenvolvedor scio da TKS Software - Solues de Automao Comercial e Softwares Dedicados. Pode ser contactado em

8 victory@igara.com.br, ou atravs dos sites www.victory.hpg.com.br www.enge.cjb.net www.igara.com.br. -

Augusto Frederico estudante de Engenharia Mecatrnica e desenvolvedor da TKS Software - Solues de Automao e Softwares Dedicados. Pode ser contactado em fredygbi@yahoo.com.br