quinta-feira, fevereiro 28, 2008

Código de Barras - Código 2 de 5

O código 2 de 5, também chamado de Discreto 2 de 5, 2 de 5 Padrão e Industrial 2 de 5, é um código numérico de baixa densidade e porisso pouco usado. Ele é um código discreto, onde cada caracter corresponde diretamente a um padrão de barras distinto e de mesmo tamanho, o que permite a sua implementação através de um fonte de letras. É um código bastante antigo, existindo desde os anos 60.

O código 2 de 5 utiliza duas larguras de barra. A barra mais larga deve ter de duas a três vezes a largura da mais estreita. Cada caracter é codificado em uma sequência com 5 barras, das quais 2 são largas e 3 são estreitas (daí vem o 2 de 5). Os espaços entre as barras não contém informação e normalmente são da mesma largura que as barras estreitas. A distância entre um caracter e outro não é crítica mas deve ser de pelo menos uma barra estreita.

Além dos dígitos de 0 a 9 o código 2 de 5 possui sequências especiais para marcar o início e o fim do código.

Um código 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 caracter de checksum (módulo 10) pode opcionalmente ser colocado entre o final dos dados e a marca do final.

As sequências utilizadas para os dígitos no Código 2 de 5 são:


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 2, espaço, barra de largura 2, espaço, barra de largura 1, espaço
  • o fim é a seqüência: barra de largura 2, espaço, barra de largura 1, espaço, barra de largura 2, espaço
A largura de cada sequência é 14 módulos. Considerando que a barra larga tenha o triplo da largura da estreita, não seja usado checksum, um código com n dígitos terá largura de 15*n+ 16 módulos:
  • 15 = 2 barras de lagura 3 + 3 barras de largura 1 + 1 espaço após cada barra
  • 8 = largura das marcas de início e fim
Para calcular o checksum (opcional) some primeiro os dígitos, usando pesos 3 e 1 alternadamente da direita para a esquerda. Calcule o resto da divisão desta soma por dez. Se o resto for zero, o dígito é 0, senão é 10 - resto. Por exemplo:
Código 12345 
Pesos 31313

Soma 3+2+9+4+15 = 33
Resto 33 % 10 = 3
Dígito 10 - 3 = 7
O código 2 de 5 é um código em desuso, visto que permite codificar apenas dígitos e a densidade resultante é muito baixa. O código 128 (que veremos futuramente) permite codificar o conjunto completo de caracteres ASCII e é muito mais eficiente na codificação de dígitos.

No próximo post veremos um parente do 2 de 5, o Intercalado 2 de 5, que possui uma codificação bem mais compacta mas infelizmente possui alguns problemas práticos.

Atualização em 03/mar/08: a relação de largura entre as barras largas e estreitas pode variar de 2 a 3, acertos menores no texto.

2 comentários:

Anônimo disse...

Desculpe, meu amigo. Seu artigo tem vários erros. Veja uma especificação melhor do 2 de 5 intercalado aqui:
http://www.barcode-1.net/i25code.html

Daniel Quadros disse...

Anônimo,

Conforme dito no parágrafo inicial, estou falando aqui do Discreto 2 de 5, não no Intercalado 2 de 5 (que é descrito no post seguinte da série).

Isto não quer dizer eu não possa ter escrito uma ou mais besteiras... Se você achou algum erro, por favor seja mais específico.

[],

Daniel