Vous êtes sur la page 1sur 23

http://www.google.com.br/search?

hl=ptBR&source=hp&q=padres+de+cdigo+de+barras&btnG=Pesquisa+Googl e&meta=&aq=0&oq=padroes+de+codi

PADRES DE CDIGO DE BARRAS


http://www.modulocomercial.com.br/codigo_de_barras.htm
Padro 25 - foi um dos primeiros e j est desatualizado. Padro 2/5 intercalado - utilizado para codificar apenas dgitos numricos. utilizado em segmento bancrio ou em aplicaes que no requeiram a utilizao de letras ou outros caracteres. Padro 39 - utilizado para codificar caracteres alfanumricos e no tem limite quantidade de caracteres a serem codificados. Padro 39 com dgito de verificao - utilizado com dgito de controle para dar mais controle e segurana no processo. Padro 49 - uma micro simbologia, permitindo a codificao de informaes em um espao reduzido. PDF417 - uma simbologia que oferece alta capacidade compactao de dados. Permitindo a codificao de milhares de caracteres em alguns centmetros quadrados, esta simbologia muito adequada para utilizao, por exemplo, em codificao de notas fiscais. Padro 128 - admite at 106 caracteres, ocupando uma rea de impresso menor que o Padro 39. Padro EAN/UCC12 - possui a estrutura do cdigo 128 e tem a vantagem de autoreconhecimento da estrutura do cdigo de barras com uma tabela de correlao de cdigos de quase 50 elementos. Padro UPC-A e UPC-E - utilizado nos supermercados dos Estados Unidos e Canada, codifica caracteres numricos. Padro EAN 13 - uma expanso do cdigo UPC e utilizado em todo o mundo, permitindo a codificao de produtos de at 13 dgitos, determinando o pas/empresa/produto e dgito verificador. Esta simbologia foi adotada como padro para identificao de produtos de bem de consumo. Padro EAN 8 - para aplicao em produtos onde s necessite 8 dgitos, uma verso simplificada do EAN 13.

Cdigo de barras sem mistrios


http://msdn.microsoft.com/pt-br/library/cc580676.aspx

por Luiz Cludio C. V. da Rocha


Para ler todas as matrias da FrumAccess, assine a revista no endereohttp://www.forumaccess.com.br/novo/

Este artigo discute:

Este artigo usa as seguintes tecnologias: Access 97, 2000 e XP

Cdigo de barras

INTRODUO
Quem se lembra da operao de varejo no Brasil antes dos anos 90, quando a tecnologia era proibida por aqui, sabe a grandeza que representa a automao comercial. Nos supermercados, por exemplo, o funcionrio do caixa procurava a etiqueta de preo de cada item e digitava o valor em sua mquina registradora, fazendo a soma. Muito usual tambm era ver uma empresa do comrcio fechada para inventrio, visto que o controle era praticamente todo manual e demandava muito tempo, espao e pessoas. Apenas as lojas menores podiam se dar ao luxo de conhecer mais de perto os clientes: anotava-se em sua ficha, ou na caderneta, os produtos comprados e os pagamentos realizados. Neste quadro cabe muito bem a expresso: isto coisa do sculo passado! Mas lembre-se: faz menos de 15 anos... Com a (tardia) entrada dos microcomputadores no Brasil, houve uma revoluo na administrao de varejo. O funcionrio do caixa, ao invs de simplesmente somar preos, passou a entrar com o cdigo dos produtos, e o sistema informatizado fazia o resto: totalizava as vendas, dava baixa no estoque, emitia relatrios atualizados, informava a comisso dos vendedores e tudo mais. Foi um enorme salto de produtividade. Mesmo assim, ainda era possvel melhorar: ao invs do usurio entrar com os dados, por que no o prprio sistema captur-lo? aqui que entra o cdigo de barras, uma tecnologia aplicada a muitas reas: indstria, comrcio, bancos, bibliotecas, hospitais, bancos de sangue, correios, transportes, controles de acesso etc. Apresentarei neste artigo algumas solues de cdigos de barras aplicadas ao comrcio. Inicio da pagina

O QUE SO CDIGOS DE BARRAS


Aquela estranha seqncia de barras pretas e brancas, indecifrveis para ns, nada mais que a representao de um pequeno conjunto de nmeros e/ou letras, impressos de uma forma que o leitor ptico possa interpretar: o preto retm a luz e o branco a reflete, de forma que o leitor capture os sinais e interprete qual a seqncia de nmeros (ou letras) representada pelas barras. Mesmo sendo um sistema conceitualmente simples, a base da tecnologia de automao comercial. Inicio da pagina

TIPOS DE CDIGOS DE BARRAS


O desenho das barras no sempre igual, h diferentes tipos (simbologias), ou seja, diferentes critrios para combinar barras claras e escuras. A seqncia 123, por exemplo, pode ter diversas representaes, dependendo do tipo de cdigo utilizado. Um leitor ptico no capaz de ler qualquer cdigo de barras, ele deve estar devidamente habilitado (configurado) para cada tipo que lhe for apresentado, a fim de conseguir interpretar o cdigo. Os leitores a laser (muito usados no comrcio) geralmente so configurados por comandos de programao impressos em menus (cartes) de cdigos de barras, ou ento por envio de comandos pela porta serial do micro. A grande maioria das lojas de varejo tem seus equipamentos configurados para ler os padres EAN e UPC, mas geralmente tambm lem o cdigo 3 de 9 (cada tipo ser explicado adiante).

Alm de haver diferentes combinaes de barras, alguns cdigos possuem um contedo de dados padronizado, ou seja, a seqncia de nmeros representados organizada de uma determinada forma (cada posio tem um significado). Isto ocorre, por exemplo, com o EAN13, UPC12 e demais padres de codificao estabelecidos e controlados internacionalmente. Outros cdigos, como o 39, so livres, ou seja, quem for us-lo tem a liberdade de posicionar os nmeros e letras livremente. A principal vantagem de se trabalhar com um padro internacional rgido que cada produto ter seu cdigo exclusivo, aplicvel no mundo inteiro, sem repetio, o que possibilita a integrao e a troca de informaes entre os vrios elos da cadeia produtiva: do fabricante ao consumidor final, o cdigo acompanha o produto. A contrapartida a burocracia: a empresa deve se cadastrar no rgo responsvel (EAN - European Article Numbering - responsvel pelos cdigos no mundo inteiro, exceto Estados Unidos e Canad, em que o responsvel o UCC - Uniform Code Council), a fim de receber um ID que a identificar exclusivamente dentro do cdigo de barras. evidente que sem tal burocracia seria impossvel existir este sistema organizado de codificao em escala global. J os cdigos livres (no padronizados) tm a vantagem de permitir sua personalizao, criando uma lgica para incluir todas as informaes que precisa (veja o Box 1 - Cdigo interno personalizado). possvel, por exemplo, criar um cdigo que contenha a sigla do fornecedor, o cdigo da categoria, o cdigo da linha, o cdigo da cor, e qualquer informao que permita empresa descrever um produto apenas olhando seu cdigo. possvel, at mesmo, incluir neste cdigo o nmero de srie do produto, para acompanh-lo individualmente, fornecendo uma informao valiosa empresa. Por outro lado, a abrangncia do cdigo no padronizado se limita prpria empresa (ou a um determinado grupo que compartilhe a mesma lgica em seu sistema). Inicio da pagina

O PAPEL DO APLICATIVO
muito importante entender que quem deve se preocupar com a leitura das barras o leitor ptico: ele foi criado para esta nica finalidade. O aplicativo, por sua vez, deve se preocupar em entender o contedo que as barras representam, ou seja, os caracteres que foram interpretados pelo leitor ptico. Eu friso este ponto porque justamente nele que muitos desenvolvedores ficam em dvida: como fazer meu aplicativo entender as barras? A resposta simples: o aplicativo no precisa entender as barras, mas sim o contedo delas. O leitor ptico faz a leitura e retorna o resultado (ex: 9771414305005). O trabalho do aplicativo deve ser tratar o 9771414305005 (buscando o ID na tabela de produtos, gravando nos detalhes de venda, imprimindo o item no cupom fiscal, etc.). Inicio da pagina

CDIGOS MAIS COMUNS NO COMRCIO


EAN13: o cdigo mais usado na identificao de itens comerciais. composto de 13 dgitos: os 3 primeiros representam o pas (o Brasil 789), os 4 seguintes representam o cdigo da empresa filiada EAN, os prximos 5 representam o cdigo do item comercial dentro da empresa, e o 13 dgito o verificador, obtido por meio de clculo algoritmo (ver edio 23 da Frum Access para mais informaes sobre o clculo). De acordo com a grade de itens da empresa (quantidade), a composio pode ser mudada para que o item comercial tenha de 3 a 6 dgitos, e a empresa tenha 6 a 3. Ou seja, a combinao de cdigo da empresa + cdigo do item deve ter 9 dgitos. EAN8: a verso reduzida do EAN13, para embalagens pequenas. Ele no inclui o cdigo da empresa, apenas o do pas (3 dgitos), do produto (4 dgitos) e dgito verificador. Como no h o cdigo da empresa, o licenciamento de numeraes integralmente controlado pela EAN, mediante comprovao tcnica de necessidade, taxa de licenciamento e anuidade de manuteno, pois h poucos cdigos disponveis por pas. UPC-A: tem a mesma aplicao do EAN13, mas usado para itens comercializados nos Estados Unidos e Canad. Tem 1 dgito que representa a categoria do produto, 5 dgitos para a identificao do fabricante, 5 dgitos para a identificao do produto e 1 dgito verificador (totalizando 12). No h identificao do pas, pois o cadastro de filiados nico para EUA e Canad. UPC-E: a verso UPC de 8 dgitos, obtida suprimindo 4 zeros do UPC-E (entre nmero da empresa e nmero do item).

3 de 9: um cdigo simples de ser gerado, aceita letras e nmeros e livre. Sua simbologia no densa, dispensando o uso de dgito verificador (que usado nos outros padres para garantir que a leitura foi feita corretamente). Costuma ser usado para codificaes internas de empresas que necessitam de caracteres alfa-numricos (indstrias, companhias areas, etc.), mas tambm usado em aplicaes comerciais. Em geral, os sistemas no Brasil esto modelados para receber cdigo de 13 posies (embora a EAN recomende 14), o que possibilita trabalhar tambm com cdigos de 8 (EAN8/UPC-E) e 12 (UPC-A) posies. O mesmo no se aplica aos sistemas norte-americanos, configurados para receber apenas 12 posies, dificultando o trabalho com EAN13. Entretanto, h um acordo entre a EAN e a UCC para que esta situao seja corrigida at 2005. Inicio da pagina

GERANDO CDIGO DE BARRAS NO ACCESS


Existem diferentes maneiras de se gerar cdigos de barras a partir do Access: a) Usar fontes TrueType de cdigo de barras: no relatrio cria-se uma caixa de texto e se ajusta a propriedade Nome da Fonte. Embora seja uma soluo aparentemente simples, importante lembrar que cada tipo de cdigo de barras tem suas especificaes, como caracteres de abertura e fechamento, tamanho, etc., e o relatrio deve consider-las. Alm disto, geralmente as fontes no so gratuitas ( preciso compr-las), salvo algumas excees. b) Usar cdigo VBA para gerar as barras: a soluo mais interessante, pois interna do prprio aplicativo, no sendo preciso licenciar e cuidar da distribuio de componentes externos. Entretanto, as rotinas de gerao das barras so bastante complexas, estando alm do escopo do dia a dia do desenvolvedor. c) Usar um componente externo (OCX ou DLL) que tenha todas as regras encapsuladas, para que com poucas linhas de cdigo as barras sejam geradas sem dificuldade. uma boa soluo para quem pretende trabalhar com vrios padres diferentes, pois tira do desenvolvedor a necessidade de lidar com as inmeras particularidades e regras de cada tipo. Os componentes mais completos no so gratuitos. Inicio da pagina

GERANDO EAN13
Na edio 23 da FrumAccess foi publicado um artigo pioneiro sobre cdigo de barras no Access, de autoria do Mauro Possato, o qual considero de leitura obrigatria a quem vai trabalhar com este recurso. O artigo explica o clculo do dgito verificador e todo o cdigo necessrio para se gerar as etiquetas, e ainda inclui um MDB de exemplo (Ean13.mdb), que pode ser encontrado no CD Enciclopdia FrumAccess (outra fonte indispensvel de estudo), ou na seo de downloads do FrumAccess (www.forumaccess.com.br/novo/downloads.asp, no link da Revista 23). Uma outra forma de se gerar cdigo de barras EAN13 usar o ActiveX Chromatick BarCode, que freeware e pode ser encontrado para download em sites como VbMania e VbBrasil, e tambm foi includo no arquivo de exemplo deste artigo. Para us-lo, copie os arquivos CTKBCDC.OCX e CTKBCDC.DEP na pasta de sistema do Windows (c:\Windows\System ou c:\WINNT\System32, dependendo do sistema operacional) e faa o registro digitando Regsvr32 CTKBCDC.ocx na linha de comando do Iniciar/Executar do Windows (Figura 1).

Figura 1 - Registro do componente

Feito o registro, os controles dos cdigos de barras podero ser colocados em relatrios do Access como qualquer outro controle, bastando abrir a caixa de ferramentas e clicar no boto Mais Controles (Figura 2), selecionar na lista e dimensionar no relatrio.

Figura 2 - Listagem Mais Controles No arquivo de exemplo deste artigo, que deve ser usado para acompanhar os prximos itens, criei um relatrio a partir do Assistente de Etiqueta e inclu os campos de cdigo do produto (CodBarras - deixei invisvel), descrio e preo. Coloquei o controle ctk_BarCode.EAN13 para exibir as barras (Figura 3), dando-lhe o nome de ctkEAN13.

Figura 3 - Estrutura do relatrio Veja que o controle ActiveX fica configurado para imprimir zeros, ento preciso informar, em tempo de execuo, o valor que dever estar contidos nas barras (ou seja, o contedo do campo CodBarras), na propriedade Code. Para isto, pode ser usado o evento Ao Imprimir da seo detalhe, com a seguinte linha de cdigo:

Me.ctkEAN13.Code = Me.CodBarras

O resultado do relatrio de etiquetas pode ser visto na Figura 4.

Figura 4 - Relatrio de etiquetas EAN13 Inicio da pagina

GERANDO EAN8

Para gerar o cdigo EAN8, voc pode usar o mesmo componente, porm incluindo o controle ctk_BarCode.EAN8 no relatrio, dando-lhe o nome de ctkEAN8. Siga os mesmos passos descritos anteriormente, lembrando de ajustar o nome do controle na linha de cdigo do evento Ao Imprimir da seo:

Me.ctkEAN8.Code = Me.CodBarras
O cdigo de barras EAN8 tem a aparncia mostrada na Figura 5.

Figura 5 - Relatrio EAN8 Inicio da pagina

GERANDO CDIGO 3 DE 9
O cdigo de barras 3 de 9 (ou Barcode39) bastante usado para cdigos personalizados, e tem a flexibilidade de imprimir letras e caracteres especiais, aumentando bastante a possibilidade de aplicao. Uma das formas de ger-lo usar o mesmo componente ctk_BarCode j explicado nos tpicos anteriores, porm selecionando o controle Code39. Como neste cdigo os caracteres no so exibidos em formato humano-legvel, recomendvel deixar visvel uma caixa de texto com o cdigo do produto, para que o operador possa digit-lo caso a leitura ptica falhe. Entretanto, a melhor forma de se trabalhar no Access com o Barcode39 por meio de cdigo. No arquivo de exemplo deste artigo coloquei as funes necessrias para isto: a funo MD_BC39 retorna a composio binria (de 9 dgitos) de cada letra, nmero e caractere especial suportados pelo Barcode39. J a funo MD_Barcode39 usa essa composio de binrios para gerar as barras pretas e brancas em um controle do relatrio (o nome do controle e do relatrio so passados como parmetros). No coloquei estas funes aqui porque so extensas e esto fora do escopo do artigo, mas quem tiver curiosidade pode analisar o mdulo basCodBar39 do arquivo de exemplo. J no relatrio, basta criar uma caixa de texto (Barcode39) para receber as barras, e outra com o nome (CodBarras) para exibir o cdigo em formato humano-legvel. No evento Ao Imprimir da seo detalhe, coloque uma linha de cdigo para chamar a funo MD_Barcode39:

Call MD_Barcode39(Me.Barcode39, Me)

O primeiro parmetro o nome do controle em que aparecero as barras (Barcode39), o segundo parmetro faz referncia ao relatrio atual (Me). O resultado exibido na Figura 6.

Figura 6 - Relatrio do cdigo 39

O cdigo 3 de 9, alm de letras e nmeros, tambm imprime espao, $ (cifro), % (porcentagem), + (mais), | (pipe), . (ponto), - (hfen) e / (barra). Uma terceira forma de se trabalhar com o cdigo 39 usar uma fonte TrueType. possvel fazer download de uma fonte gratuita no endereo www.squaregear.net/fonts/free3of9.shtml, a qual tambm foi includa no arquivo de exemplo deste artigo. Para us-la, copie os arquivos FREE3OF9.TTF (Free 3 of 9 - para nmeros) e FRE3OF9X.TTF (Free 3 of 9 Extended - alfanumrica) para a pasta de fontes do Windows. Em seguida, abra o Painel de Controle e o cone Fontes. Abra o menu Arquivo/Instalar nova fonte, selecione a pasta de fontes e selecione os dois arquivos TTF, conforme indica a Figura 7.

Figura 7 - Instalao de fontes TrueType Com as fontes instaladas, crie uma caixa de texto no relatrio do Access e selecione Free 3 of 9 Extended como propriedade Nome da Fonte. Na origem do controle, necessrio colocar os caracteres de abertura e fechamento, que so smbolos procurados pelo leitor ptico para iniciar e finalizar a leitura. No caso do cdigo 3 de 9, o caractere o asterisco (*). Assim, na origem do controle coloque:

=* & [CodBarras] & *


O resultado deve ser exatamente igual ao que foi mostrado na figura 6, naturalmente. Observao: se for trabalhar com esta fonte no Word, lembre-se de desabilitar a opo *Negrito* e _itlico_ por formatao real, no menu Ferramentas/Autocorreo/AutoFormatao ao Digitar. Inicio da pagina

IMPRESSORA TRMICA
Para quem precisa imprimir grande quantidade de etiquetas, uma soluo mais econmica usar uma impressora trmica (etiquetadora). Embora seja um equipamento bem mais caro que uma impressora jato de tinta comum, a economia com suprimentos (2 ou 3 cartuchos de tinta custam mais que a prpria impressora) grande. Essas etiquetadoras so muito comuns em aeroportos, usadas para emitir as etiquetas com a sigla do aeroporto de destino afixadas nas malas, e tambm os cartes de embarque. Funcionam com um rolo de etiquetas e outro de fita preta (ribbon), suprimentos de baixo custo. O ribbon aquecido na cabea de impresso, de forma a gravar texto, barras e imagens na etiqueta. O sensor do equipamento pode detectar onde acaba uma etiqueta e comea outra. O equipamento ligado na porta serial do micro, e para control-lo pode-se usar o ActiveX MSCOMM32.OCX, que vem no Visual Basic, e tambm est disponvel no material de download da edio 35 da FrumAccess (no artigo Coletando dados com Access). O cdigo a seguir pode ser usado para imprimir etiquetas em impressora Datamax, uma das mais usadas no mercado:

Private Sub ImprimeTeste()

Dim intPorta As Integer Dim strTexto As String On Error GoTo Tratamento MSComm1.CommPort = 1 COM1 Configura a porta serial MSComm1.Settings = 9600,n,8,2 Controla o Fluxo de Dados MSComm1.Handshaking = comRTSXOnXOff Abre a porta serial MSComm1.PortOpen = True Define um avano no papel aps a impresso MSComm1.Output = ~f256 & Chr$(13) Define o Off set de coluna MSComm1.Output = ~LC0005 & Chr$(13) Define o Off set de linha MSComm1.Output = R0000 & Chr$(13) Define o tamanho do Pixel. MSComm1.Output = D11 & Chr$(13) Seleciona o zero no cortado MSComm1.Output = z & Chr$(13) Define o calor de impresso. MSComm1.Output = H09 & Chr$(13) CAMPOS DA ETIQUETA: MSComm1.Output = 102200100650025 & _ SOFTWARE & Chr$(13) Categoria MSComm1.Output = 102200100550015 & _ VISUAL BASIC & Chr$(13) MSComm1.Output = 102200100550095 & _ MICROSOFT & Chr$(13) Marca MSComm1.Output = 102200100450015 & _ STANDARD & Chr$(13) Tipo MSComm1.Output = 102200100450105 & _ 2003 & Chr$(13) Verso MSComm1.Output = 102200100350015 & _ .NET & Chr$(13) Famlia MSComm1.Output = 102200100350095 & _ 65955690 & Chr$(13) Cdigo MSComm1.Output = 102200100250015 & _ FERRAMENTA DESENV & Chr$(13) Descrio Cdigo de barras (segunda letra minscula) MSComm1.Output = 1e1202500000015 & _ 65955690 & Chr$(13) letra e: padro 128 MSComm1.Output = 121100100150145 & _ R$ & Chr$(13) Preo (cifro) MSComm1.Output = 121100100050145 & _ 500 & Chr$(13) Preo MSComm1.Output = Q & Format(1, 0000) & _ Chr$(13) Quantidade de cpias da etiqueta Termina a transmisso e inicia a impresso MSComm1.Output = E & Chr$(13) Do Until MSComm1.OutBufferCount = 0 Loop MSComm1.PortOpen = False Fecha a porta Exit Sub Tratamento: If Err = 8002 Then MsgBox Porta serial invlida. Exit Sub End If MsgBox Err.Description End Sub

Algumas impressoras no usam o til ~ como caractere inicial, mas sim o ^B. Neste caso, o til deve ser trocado por Chr(02) no cdigo anterior. Na linha de comando do cdigo de barras, a letra e representa o cdigo de barras 128, mas poderiam ser usadas as seguintes letras: a - cdigo 39, b - UPC-A, c - UPC-E, d - I25, f EAN-13, g - EAN-8, h - HIBC, i - Codabar, j - I25+CD, k - Plessey, l - Case, m UPC+2, n - UPC+5, o - 93, v - UPC peso varivel, q - UCC-EAN128. Dica: a cabea de impresso tem vida til. Aps alguns milhares de etiquetas impressas, ela vai se desgastando e as etiquetas comeam a apresentar algumas falhas (riscos brancos bem finos). Se levar na assistncia tcnica, eles vo sugerir a troca da pea (que bastante cara). Entretanto, como as etiquetas geralmente so bem mais estreitas que o cabeote, possvel posicionar o rolo inteiro mais direita e configurar o Off-Set de coluna (ver cdigo anterior) para que a impresso comece em outro lugar. Desta forma voc foge das falhas e aumenta bastante a vida til da pea, trocando-a apenas quando estiver inteiramente gasta. Por isto, procure sempre comear a imprimir em um dos cantos. Inicio da pagina

ELABORANDO CDIGOS INTERNOS


Embora a grande maioria dos produtos em circulao no comrcio j tenha um cdigo de barras impresso pelo fabricante, em algumas situaes a empresa pode ter a necessidade de fazer um controle interno. Situao 1: imagine uma locadora de vdeos que queira controlar os itens que esto locados, os que no foram pagos ainda, as devolues atrasadas, etc., e que tudo que ela tenha inicialmente seja apenas um cadastro de filmes, em que cada ttulo possui um cdigo de 6 dgitos (FFFFFF). Este cdigo de 6 dgitos (ex: 058489) seria suficiente, por exemplo, para informar ao cliente se ele j locou o filme antes (basta uma consulta base de dados), mas no possibilita fazer todos os controles que a empresa precisa. Muitos ttulos disponveis existem na verso vdeo (VHS) e DVD, e a empresa pode querer tratlos de forma diferente. Para indicar o tipo, possvel acrescentar uma letra ao cdigo, como D para DVD e V para VHS: FFFFFFT (ex: 058489D). Assim, a empresa pode controlar no apenas preos diferentes, mas tambm analisar qual tipo tem sido mais procurado, quais itens esto disponveis em uma nica verso, quais itens merecem uma atualizao para DVD, etc. Por fim, cada filme pode ter mais de uma cpia, e a locadora precisa de um controle individual de cada item. Para isto, pode acrescentar dois dgitos ao cdigo, a fim de numerar cada unidade de um mesmo filme (01, 02, 03...): FFFFFFTUU. Assim, se a locadora adquirir 3 DVDs do filme 058489, a numerao de cada um seria 058489D01, 058489D02 e 058489D03. Desta forma, todos os itens estariam identificados, e se o banco de dados estiver devidamente modelado, seria possvel, por exemplo, a partir de uma leitura ptica no balco de atendimento, identificar na hora se todos os filmes esto sendo devolvidos pelo cliente, quais esto dentro do prazo, quais foram pagos, etc. Situao 2: uma empresa que fabrica e comercializa roupas no varejo precisa codificar seus produtos, visando melhor controle administrativo e planejamento de produo. Como o cdigo ser criado internamente, interessante um mecanismo que permita identificar todos os atributos do produto, como no formato LYYTTTMMCCSS, em que: - L: indica a coleo (vero, inverno, etc.). - YY: indica o ano (2001, 2002, 2003). - TTT: indica a categoria (camisa, cala, etc.). - MM: indica o material (l, seda, algodo, etc.). - CC: indica a cor (branca, preta, etc.) - SS: indica o tamanho (grande, pequeno, 40, 42, etc.). Exemplo: 103002450278 - coleo vero 2003, cala, linho, preta, tamanho 44. Um cdigo deste tipo, alm de facilitar a identificao dos itens no ponto de vendas (auxiliando o trabalho do vendedor), simplifica tambm a criao e anlise dos relatrios gerenciais (itens de

maior giro, tendncias de cada estao, cores e materiais mais procurados, tamanhos que no vendem, e muitas outras opes). Inicio da pagina

CDIGOS DE BARRAS COM ERROS?


Em uma edio da Harvard Business Review, um artigo sobre cadeias de suprimentos alertou sobre o problema de erros de inventrio que algumas grandes empresas americanas estavam enfrentando, mesmo trabalhando com estoque informatizado por cdigos de barras. Estariam as leituras com erro? A resposta negativa: o erro continuava sendo dos operadores. O problema mais freqente encontrado a estocagem em lugar errado: na pressa do dia a dia, muitos produtos so guardados em qualquer canto, e na hora da contagem no so encontrados, pois no esto juntos. Outro problema muito comum est no caixa: o funcionrio v duas embalagens iguais, ento ao invs de passar uma a uma no leitor ptico, passa duas vezes o mesmo produto, para ir mais rpido. Entretanto, um era iogurte de morango, o outro era de frutas vermelhas... Resumo: ao implantar um sistema de cdigos de barras, muito importante dar treinamento a todos os funcionrios, at mesmo queles que aparentemente no precisam. s vezes um nico minuto de explicao pode poupar horas de tempo desperdiado no futuro. Inicio da pagina

CONCLUSO
Espero ter contribudo aqui com o seu entendimento sobre a tecnologia de cdigo de barras, que embora no seja nova, ainda um mistrio para muitos desenvolvedores. Conforme o artigo mostrou, h diversas maneiras de se trabalhar com estes recursos. O importante saber analisar o caso concreto e escolher a soluo que melhor atenda os objetivos. Embora haja muitos detalhes e regras, o conceito de funcionamento do cdigo de barras simples. Todas as vantagens aqui apresentadas (produtividade, melhor qualidade das informaes, cruzamento de dados, etc.) no derivam do cdigo de barras, mas sim de um banco de dados bem modelado. Sem isto, as barras pouco ajudaro. Juntando as duas partes (entrada de dados com qualidade e boa modelagem do banco de dados), o sistema ser uma boa ferramenta de gesto, e os relatrios sero mais confiveis. Matrias Relacionadas: Revista 23 - Cdigo de barras EAN13 Revista 35 - Coletores de dados Revista 40 - Cdigo de barras no VB/Crystal Reports Revista 41 - Boletos bancrios no Access Para se aprofundar: Site EAN Brasil: www.eanbrasil.com.br * Luiz Cludio C. V. da Rocha (lui@link.com.br) administrador de empresas e advogado, atua na rea de desenvolvimento de sistemas e colaborador no GD FrumAccess. Inicio da pagina

DISPONVEL PARA DOWNLOAD


CODBARRAS_LC.EXE (Access 97, 2000 e XP) Disponvel para download em www.forumaccess.com.br

Cdigo de Barras - Conceitos Bsicos e Utilizao no VB


http://www.macoratti.net/cod_bar.htm

Vou deixar bem claro uma coisa antes de iniciar o artigo: devido a complexidade e extenso do assunto nosso objetivo principal ser abordar os conceitos bsicos e dar um orientao bsica para que cada um , na medida de sua necessidade saiba onde procurar as informaes. Para aplicaes comerciais existem muitas solues ,e , cada caso um caso particular. Para imprimir cdigos de barras no Visual Basic e no Crystal Reports usaremos fontes especficas para este propsito , talvez essa no seja a soluo para o seu problema , mas que fique bem claro que para uso comercial um componente de terceiros quase sempre a melhor opo. Por questo de espao estarei disponibilizando somente parte das fontes usadas. Todas as fontes e manuais de referncia para cdigo de barras esto presentes no Super CD VB - 2001.

Conceitos Bsicos
Para compreender como as informaes so codificadas em cdigo de barra fundamental que se tenha os seguintes conceitos. Vejamos os principais: Barra - Consiste na parte escura do cdigo(normalmente preta), ela absorve a luz e codifica um em cada modulo de barra . Espao - Consiste na parte clara do cdigo (geralmente o fundo que o cdigo impresso) , ele reflete a luz e cada modulo codificado como zero. Caractere - Cada numero ou letra codificado com barra e espao. Cada caractere pode ser modificado por tantos 1 ou 0 quantos forem os mdulos contidos na sua codificao. Caractere inicial final - Indicam ao leitor de cdigo o respectivamente o inicio e o fim do cdigo estes caractere pode ser representado por uma letra ,um numero ou um outro smbolo dependendo do padro do cdigo em questo. Separadores - Os separadores serve para indicar as extremidade do cdigo e indicar ao leitor o sentido que o cdigo esta sendo lido. Este separadores serve tambm para permitir que o cdigo seja lido nos dois sentidos.

Zonas mudas - Tambm conhecida como Quites Zones, so nada mais que margens antes do caractere inicial e depois do caractere final formadas por espaos. Elas so extremamente importantes para o reconhecimento do cdigo pr parte do leitor, e se forem excludas podero impossibilitar a interpretao do cdigo de barra, gerando assim, uma leitura nula.

Sinais de enquadramento - Delimitam uma rea retangular da qual deve estar contidos todos os elementos de cdigo e somente ele.

Densidade do cdigo de barra - caracterizada pela relao entre a quantidade de mdulos ou caracteres e o espao ocupado pelos mesmo uma vez impressos. Modulo - O modulo consiste no elemento mais estreito do cdigo, seja ele uma barra ou espao. Os separadores, as zonas mudas, os caracteres especiais, ou seja, todos os elementos que compem o cdigo de barra so mltiplos do modulo quanto a largura. Isto posto, podemos dizer que o modulo a unidade mnima e bsica componente do cdigo de barra cujo tamanho e definido diretamente pela densidade do cdigo. Flag - Ele empregado no sistema EAN no inicio do cdigo para indica o pas de origem do produto. J no UPC ele tambm situa no inicio do cdigo mas ele indica o tipo de produto. Dgito verificador - utilizado para detectar erros durante a varredura, evitando assim a leitura errnea, e tambm adulteraes, ele constitudo pr um elemento includo no cdigo que calculado a parir de um algoritmo que emprega os demais nmeros do cdigo.

Como os dados so codificados em barras Pr uma mera conveno, identificaremos o digito zero como uma seqncia de cinco barras :barra estreita, barra estreita, barra larga, barra larga e barra estreita, espaadas por espaos em branco. Assim, o digito 0 codificado ficaria dessa maneira:

Os digito de 0 - 9 ficaria :

O nmero 1998 ficaria :

COMO OS CDIGOS DE BARRAS SO LIDOS


Para compreender como os cdigos de barra so lidos deve-se primeiro entender dois conceitos : leitura e codificao. Leitura Um dispositivo de leitura de cdigo de barra ele transforma os dados codificado em barras em sinais eltricos de durao proporcionais as barras. Vejamos melhor isto observando o funcionamento de uma caneta tica. A caneta tica e um dispositivo leitor de cdigo de barra que tem em sua ponta um emissor de luz normalmente vermelha e um sensor para receber a reflexo dessa luz (ou no).Assim se a caneta tica for colocada em uma superfcie branca , a luz emitida vai refletir na superfcie e o sensor vai captar essa reflexo e gerara um sinal eltrico que corresponde a superfcie branca. De maneira oposta , se a caneta for posicionada em cima da superfcie escura, normalmente preta, a luz emitida da caneta ser absorvida e o sensor no recebera nenhum reflexo, e o sensor ira gerar um sinal eltrico correspondente a cor preta. Se a caneta for passada sobre uma etiqueta de cdigo de barra com velocidade constante , a caneta ir gerar uma seqncia de sinais eltricos conforme a mesma vai passando pelas barras (largas e finas) pretas e espaos em branco. Atravs da luz refletida pelos mdulos que compem os espao, ou pela sua ausncia na barras, o leitor interpreta o cdigo. A interpretao acontece atravs do uso de um conversor analgico/ digital que transforma os sinais eltricos analgico produzido pela luz recebida pr meio de um sensor fotoeltrico, em um sinal digital (sucesso de 0 e 1 em forma de pulso) e que na ausncia da luz

refletida gera um outro sinal digital que caracteriza a barra, assim, cada caractere do cdigo interpretado como um numero binrio, onde cada modulo reproduz um digito 0 ( reflexo da luz pelo cdigo, ou seja , espao no cdigo ), ou um digito 1 (absoro da luz pelo cdigo, ou seja, barra no cdigo). Observe a figura abaixo: Decodificao Decodificar um cdigo de barra transformar os sinais eltricos de um dispositivo leitor de cdigo de barra em um caractere correspondente de acordo com o padro do cdigo utilizado. Assim, no exemplo anterior , a decodificao do cdigo lido se daria da seguinte maneira: o decodificador obtm as informaes : barra estreita, barra estreita, barra larga, barra larga e barra estreita, e utilizandose a tabela de codificao do cdigo 25, pr exemplo, obtm como caractere lido o digito 0 . Aps uma etiqueta ser lida e de codificada, o resultado pode ser transferido para o equipamento de (PDV, microcomputador, etc.) de diversas maneiras tais como : via teclado, via interface RS-232C (serial) ou outra interface especifica tais como placas particulares ou interface joystick, por exemplo.

Cdigos de barras mais utilizados no Brasil


A seguir os principais cdigos de barras usados no pas :

25 Intercalado - Utilizado quando se desejam imprimir apenas dgitos


numricos, muito utilizado em aplicaes comerciais.

39 - Utilizado quando se desejam imprimir caracteres alfa-numricos; muito


utilizado em aplicaes industriais.

39 com dgito de verificao - Utilizado quando se deseja obter mais


segurana na leitura dos cdigos, pois possui dgito de controle.

EAN-13 - Padro adotado pela ABAC (EAN Brasil) para codificao de produtos
em supermercados, permite a codificao de at 13 dgitos numricos.

EAN-8 - Verso simplificada do padro EAN-13, para aplicao em produtos onde


a etiqueta no padro EAN-13 fique muito grande. Este padro permite a codificao de at 8 dgitos numricos.

O cdigo de barras usado pelo setor financeiro


Orientao - Ceneaban - Centro Nacional de Estudos da Arrecadao Bancria

O Cdigo de Barras que usado no setor financeiro (Bancos) do tipo 2 de 5

intercalado. 2 de 5 - significa que 5 barras definem 1 caracter, sendo que duas delas so
barras largas;

Intercalado - significa que os espaos entre as barras tambm tem


significado, de maneira anloga as barras; Este tipo de cdigo de barras trabalha somente com caracteres numricos. a) O tamanho do campo do Cdigo de Barras de 46 posies, sendo 44 para contedo dos dados mais 2 Bits, 1 de Start e outro de Stop. ( Favor verificar documentao mais recente) b) O Cdigo de Barras deve estar no verso e preferencialmente tambm no anverso do documento, sendo que no verso dever estar na parte inferior (centro) e no anverso na parte superior direita, sendo com 12 mm do centro do Cdigo de Barras, at a borda do papel, e com 5 mm, no incio antes do start e 5 mm no mnimo, aps o stop de espao em branco. c) Para garantir a integridade de leitura do Cdigo de Barras, dever ser impresso nas partes, superior e inferior do cdigo, um trao horizontal imediatamente aps o campo, com a representao numrica, dentro de boxes, abaixo do cdigo, se impresso na parte superior do documento e com a representao numrica, dentro de boxes, sobre o cdigo, se impresso na parte inferior do documento. Sugerimos incluso de mensagem nos documentos de arrecadao para que os clientes evitem amassar, dobrar ou perfurar as contas, para no danificar o cdigo de barras. d) Dever haver uma representao numrica do contedo, logo acima do Cdigo de Barras, ela dever estar distribuda em campos de 11 posies dentro de boxes, acrescido de 1 dgito verificador, mdulo-10, a cada grupo (vide pgina 10), isto permitir a digitao dos campos, no caso de rejeio pela leitura de Cdigo de Barras. Os dgitos verificadores no estaro representados no Cdigo de Barras. e) Identificao da Empresa/rgo As posies 16 19 do Cdigo de Barras, so destinadas a identificao da Empresa/rgo, sendo que, atravs desta informao, o banco identificar a quem repassar as informaes e o crdito. O rgo responsvel pela distribuio e controle desta a Febraban (relao de Empresas/rgos j cadastradas). numerao, ser

f) Data de Vencimento No caso de ser utilizada a data de vencimento (AAAAMMDD), incluir nas 8 primeiras posies do campo livre.

Gerando cdigo de barras no VB


Finalmente chegamos a parte mais interessante , a parte prtica. Vamos gerar no Visual Basic cdigos de barras. Como exemplo iremos gerar o cdigo de barras 39 ( 3 por 9) . Neste tipo de cdigo de barras podemos codificar caracteres alfanumricos. Ele suporta codificar 26 letras maisculas , 10 dgitos e 7 caracteres especiais. Cada carter comporto por 5 barras e 4 espaos sendo que cada barra ou espao pode ser largo ou estreito e 3 dos nove elementos so sempre largos. Para gerar o cdigo vamos usar fontes True Type , voc deve baixar as fontes no fim deste artigo e descompact-la no diretrio\windows\fonts . Feito isto a coisa muito fcil de fazer. Basta usa a fonte C39HrP36DlTt com o objeto Printer. No nosso exemplo vamos permitir somente a visualizao para mostrar o cdigo gerado. Vamos ao projeto: Inicie um novo projeto no VB e no formulrio padro insira os seguintes controles: duas caixas texto e duas etiquetas (labels) , um boto de comando e um controle Picturebox. Disponha os controles conforme o layout a seguir:

Agora insira o seguinte cdigo ao formulrio:

Private Sub Command1_Click() ' codigo do evento click do boto de comando PrintRoutine pic_codbar End Sub

Private Sub PrintRoutine(objPrint As Object) ' rotina que gera e visualiza o codigo de barras objPrint.Cls objPrint.FontName = Text1.Text ' nome da fonte usada objPrint.FontSize = 36 ' tamanho da fonte usada objPrint.CurrentX = 1.3 ' posiciona objPrint.CurrentY = 0.3 objPrint.Print Text2.Text ' imprime no picturebox codigo gerado Command1.Enabled = False End Sub Private Sub Text2_Change() ' habilita o boto de comando Command1.Enabled = True End Sub O resultado aps a execuo do projeto :

Gostou ??? Calma tem mais... Veremos outro projeto interessante onde o cdigo gerado via cdigo. Vamos l: Inicie um novo projeto no VB e no formulrio padro insira os seguintes controles: um textbox , um picturebox , trs botes de opo , e dois botes de comando. Desenhe os controles no formulrio como na figura abaixo:

Agora insira o seguinte cdigo no formulrio

Private Sub cmdExit_Click() ' codigo do boto Sair End End Sub

Private Sub cmdPrint_Click() 'codigo do boto imprimir Printer.PaintPicture Picture1, 5000, 5000 Printer.EndDoc End Sub Private Sub Form_Activate() ' cdigo do evento activate do formulrio optSize(1) = 1 End Sub

Private Sub optSize_Click(Index As Integer) ' codigo dos botes de opes Picture1.ScaleMode = 3 Select Case Index Case 0 Picture1.Height = Picture1.Height * (1.4 * 40 / Picture1.ScaleHeight) Picture1.FontSize = 8 Case 1 Picture1.Height = Picture1.Height * (2.4 * 40 / Picture1.ScaleHeight) Picture1.FontSize = 10 Case 2 Picture1.Height = Picture1.Height * (3 * 40 / Picture1.ScaleHeight) Picture1.FontSize = 14 End Select Call Text1_Change

End Sub Private Sub Text1_Change() 'codigo do evento change da caixa de texto Call DrawBarcode(Text1, Picture1) MinWidth = 2 * Text1.Left + Text1.Width pw = 2 * Picture1.Left + Picture1.Width fw = MinWidth If pw > fw Then fw = pw Form1.Width = fw End Sub A funo que gera o cdigo de barras deve ser inserida em um mdulo e dada a seguir: Sub DrawBarcode(ByVal bc_string As String, obj As Control) Dim xpos!, y1!, y2!, dw%, th!, tw, new_string$ 'define os padroes do codigo Dim bc(90) As String bc(1) = "1 1221" bc(2) = "1 1221" bc(48) = "11 221" 'digitos bc(49) = "21 112" bc(50) = "12 112" bc(51) = "22 111" bc(52) = "11 212" bc(53) = "21 211" bc(54) = "12 211" bc(55) = "11 122" bc(56) = "21 121" bc(57) = "12 121" 'letras maiusculas bc(65) = "211 12" 'A bc(66) = "121 12" 'B bc(67) = "221 11" 'C bc(68) = "112 12" 'D bc(69) = "212 11" 'E bc(70) = "122 11" 'F bc(71) = "111 22" 'G bc(72) = "211 21" 'H bc(73) = "121 21" 'I bc(74) = "112 21" 'J bc(75) = "2111 2" 'K bc(76) = "1211 2" 'L bc(77) = "2211 1" 'M bc(78) = "1121 2" 'N bc(79) = "2121 1" 'O

bc(80) bc(81) bc(82) bc(83) bc(84) bc(85) bc(86) bc(87) bc(88) bc(89) bc(90) 'Misc bc(32) bc(35) bc(36) bc(37) bc(43) bc(45) bc(47) bc(46) bc(64) bc(65)

= = = = = = = = = = = = = = = = = = = = =

"1221 1" "1112 2" "2112 1" "1212 1" "1122 1" "2 1112" "1 2112" "2 2111" "1 1212" "2 1211" "1 2211"

'P 'Q 'R 'S 'T 'U 'V 'W 'X 'Y 'Z

"1 2121" 'espaco "" '# "1 1 1 11" '$ "11 1 1 1" '% "1 11 1 1" '+ "1 1122" '"1 1 11 1" '/ "2 1121" '. "" '@ "1 1221" '*

bc_string = UCase(bc_string)

'dimensoes obj.ScaleMode = 3 'pixels obj.Cls obj.Picture = Nothing dw = CInt(obj.ScaleHeight / 40) 'espaco entre as barras If dw < 1 Then dw = 1 'Debug.Print dw th = obj.TextHeight(bc_string) 'altura do texto tw = obj.TextWidth(bc_string) ' largura do texto new_string = Chr$(1) & bc_string & Chr$(2) y1 = obj.ScaleTop y2 = obj.ScaleTop + obj.ScaleHeight - 1.5 * th obj.Width = 1.1 * Len(new_string) * (15 * dw) * obj.Width / obj.ScaleWidth

'desenha cada caractere na string do codigo de barras xpos = obj.ScaleLeft For n = 1 To Len(new_string) c = Asc(Mid$(new_string, n, 1)) If c > 90 Then c = 0 bc_pattern$ = bc(c)

'desenha cada barra For i = 1 To Len(bc_pattern$) Select Case Mid$(bc_pattern$, i, 1) Case " " 'espaco obj.Line (xpos, y1)-(xpos + 1 * dw, y2), &HFFFFFF, BF xpos = xpos + dw Case "1" 'espaco obj.Line (xpos, y1)-(xpos + 1 * dw, y2), &HFFFFFF, BF xpos = xpos + dw ' linha obj.Line (xpos, y1)-(xpos + 1 * dw, y2), &H0&, BF xpos = xpos + dw Case "2" 'espaco obj.Line (xpos, y1)-(xpos + 1 * dw, y2), &HFFFFFF, BF xpos = xpos + dw 'linha larga obj.Line (xpos, y1)-(xpos + 2 * dw, y2), &H0&, BF xpos = xpos + 2 * dw End Select Next Next '1 mais espaco obj.Line (xpos, y1)-(xpos + 1 * dw, y2), &HFFFFFF, BF xpos = xpos + dw 'tamanho final e texto obj.Width = (xpos + dw) * obj.Width / obj.ScaleWidth obj.CurrentX = (obj.ScaleWidth - tw) / 2 obj.CurrentY = y2 + 0.25 * th obj.Print bc_string 'copia para o clipboard obj.Picture = obj.Image Clipboard.Clear Clipboard.SetData obj.Image, 2 End Sub Ao digitar o nmero para gerar o cdigo de barras temos:

Curiosidades :
Se tiver tempo e pacincia d uma espiada nos links abaixo : http://www.milk.com/barcode/ - calcula o digito de controle de cdigo de barras

http://www.marcadabesta.hpg.com.br/codigo_de_barra.htm - a marca da besta 666 e o cdigo de barras.

http://www.eanbrasil.org.br/d02_tecn/barcode_pg2.html - padro EAN - 13


Gostou ???? tem mais... Aguarde... (Os cdigos completos esto no Super CD VB 2001)

Vous aimerez peut-être aussi