A forma de codificação é idêntica à do Código 2 de 5 Padrão, porém aplicada a barras e espaços. São utilizadas duas larguras de elemento. O elemento mais largo deve ter duas a três vezes a largura do mais estreito. Cada caracter é codificado em uma sequência com 5 elementos, das quais 2 são largos e 3 são estreitos. O primeiro dígito é codificado nas barras da primeira seqüência, o segundo nos espaços da primeira seqüência, o terceiro nas barras da segunda seqüência e assim por diante.
Um código intercalado 2 de 5 é composto, no mínimo, do código de início, os códigos de dados e do código de fim. Um dígito de controle módulo 10 pode ser usado; neste caso o número codificado deve ter um número impar de dígitos, para resultar num número total de dígitos par.
As sequências utilizadas para os dígitos no Code Intercalado 2 de 5 são as mesmas do Código 2 de 5 Padrão, exceto que se aplicam tanto a barras como espaços:
Onde 'E' indica um elemento estreito e 'L' indica um elemento largo.
As marcas de início e fim fogem um pouco deste padrão:
- o início é a seqüência: barra de largura 1, espaço, barra de largura 1, espaço
- o fim é a seqüência: barra de largura 2, espaço, barra de largura 1
- 7 = 4 elementos de lagura 2 + 6 elementos de largura 1 para cada par de dígitos
- 8 = largura das marcas de início e fim (4 módulos cada)
Por este motivo, a maioria dos leitores saem de fábrica com o I25 inibido ou limitado ao tamanho 14. Infelizmente o Intercalado 2 de 5 é ainda bastante utilizado, o que cria para os fornecedores de hardware e software os problemas de ensinar a configurar o leitor e explicar o porque de códigos inválidos serem capturados.
Um uso comum do I25 é na marcação de unidades múltiplas de varejo e atacado, no chamado ITF-14 ou DUN-14. O ITF-14 consiste no código de identificação do item (o EAN-13 que veremos no próximo post) acrescido de um dígito inicial que indica o modelo de embalagem (o que permite descobrir a quantidade de unidades na embalagem). Para evitar o problema de leitura parcial, o padrão DUN-14 estipula o uso das barras de proteção:
Um outro uso do I25 é nos documentos bancários brasileiros, consistindo o chamado Código Febraban. Este código possui tamanho fixo e dígito verificador, o que ameniza o problema da leitura imparcial. Padece porém de um tamanho exagerado (44 dígitos), muitas vezes não suportado pelos leitores projetados para o mercado americano ou europeu.
Do ponto de vista extritamente técnico, o código 128 substitui com vantagens o intercalado 2 de 5, apresentando densidade equivalente com muito maior robustez.
Atualizado em 18/jun/08 para corrigir o erro nos códigos de início e fim, detectado por José Roberto Vieira.
8 comentários:
Olá Daniel, sou outro oldtimer, gostaria de lhe fazer um convite para ficarmos mais newtimers.
Marcelo Thalenberg marcelo.thalenberg@gmail.com
aguardo seu contato o meu blog é blo.mtcriativa.com.br.
Grato
Estou tentando imprimir catões com codigo de barras 2 de 5, mas por quetões esteticas eu regulo o godigo a uma área no cartão, isso pode dar erros de leitura, me inique um programa que que faça o codigo 2 de 5 com chegem no modulo 11. obrigado
Teresinha,
Ao limitar o código a uma área do cartão, o importante é deixar um espaço antes e depois do código (zona de silêncio).
Não tenho muito contato com aplicações que gerem código de barras mas uma que já usei no passado é a BCoder (http://www.taltech.com/products/barcode_software.html) mas o preço é um pouco salgado.
Daniel,
excelente este seu artigo: era o que eu estava procurando. Só uma dúvida. Conferi 3 boletos (unibanco, banespa e banco do brasil) e me parece que os códigos de início e fim são outros: talvez barra largura 1, espaço, barra largura 1 para o início, e barra largura 2, espaço e barra largura 1 para o fim. Poderia me confirmar isto ? Obrigado.
Salum
José Roberto,
Realmente, o meu texto estava errado. Já acertei, obrigado!
Olá! Estava a dias brigando com um script em java e xHTML para gerar o código bancário, mas nada. Depois das suas explicações me dei conta de que vários códigos "prontos" na Internet utilizam relação das barras 1 para fico e 3 para largo, o que está incorreto e o leitor não reconhece. Conforme você comentou o código utiliza relação 1 e 2 para as barras, ficando tudo certo. Fica a dica para quem estiver na mesma situação. Parabéns pelo post, muito útil!
Boa Noite amigos, como vão !!! SOu novato nesse lance de código de barras e este é o primeiro artigo que pelo menos me esclareceu alguma coisa, pois ninguem se presta a explicar nada pra ninguem de graça hoje em dia. Obviamente não resolveu meu problema com Boletos Bancários, mas acendeu pelo menos uma luz no escuro onde eu estava, agora pelo menos sei que não da simplesmente pra substituir toda uma formula de calculo por uma fonte ttf pra ajustar o boleto. VALEU MESMO. Me deu uma direção. Agora cabe eu correr atrás tbm. Fiquem com DEUS e obrigado pelos esclarecimentos
Boa Noite amigos, como vão !!! SOu novato nesse lance de código de barras e este é o primeiro artigo que pelo menos me esclareceu alguma coisa, pois ninguem se presta a explicar nada pra ninguem de graça hoje em dia. Obviamente não resolveu meu problema com Boletos Bancários, mas acendeu pelo menos uma luz no escuro onde eu estava, agora pelo menos sei que não da simplesmente pra substituir toda uma formula de calculo por uma fonte ttf pra ajustar o boleto. VALEU MESMO. Me deu uma direção. Agora cabe eu correr atrás tbm. Fiquem com DEUS e obrigado pelos esclarecimentos
Postar um comentário