quarta-feira, fevereiro 27, 2008

Código de Barras - Código 39

O código 39 ou código 3 de 9 é um código de uso genérico bastante popular. 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.

O código 39 utiliza duas larguras de elemento (um elemento é uma barra ou espaço). O elemento mais largo deve ter de duas a três vezes a largura do mais estreito. Cada caracter é codificado em uma sequência de 9 elementos, dos quais 3 são largos e 6 são estreitos (daí vem o 3 de 9). O primeiro e o último elemento são sempre barras. A distância entre um caracter e outro não é crítica mas deve ser de pelo menos um elemento estreito.

O código 39 permite codificar diretamente os dígitos, as letras maiúsculas e os caracteres especias - . [espaço] $ / + e %. A codificação ASCII completa pode ser obtida usando estes últimos quatro caracteres como um prefixo. Existe também uma sequência de elementos para indicar o início e fim do código (*). Esta sequência permite também ao leitor identificar o sentido em que as barras estão sendo percorridas.

Um código 39 é 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 43) pode opcionalmente ser colocado entre o final dos dados e o '*' final.

As sequências utilizadas no Code 39 são:


Onde 'E' indica um elemento estreito e 'L' indica um elemento largo.

Uma característica interessante é que um erro na leitura de um único elemento (por falha na impressão ou na leitura) gera um caracter inválido, impedindo a leitura incorreta.

A largura de cada sequência é 12 a 15 módulos, dependendo da relação entre os elementos largos e estreitos. Considerando que a distância entre os caracteres seja de um módulo, que não seja usado checksum e que o elemento largo tenha o dobro da largura do estreito, um código com n caracteres terá largura de 13*(n+2)-1 módulos:
  • 13 = 3 elementos de lagura 2 + 6 elementos de largura 1 + 1 espaço ao final
  • n+2 = caractes + marcas de início e fim
  • -1 = descontando o espaço no final do último caracter
O checksum (opcional) é o resto da divisão da soma dos códigos de 0 a 42 dos caracteres de dados por 43. Por exemplo, para o texto "DQSOFT" o checksum é (13+26+28+24+15+29) % 43 = 6 que corresponde ao caracter '6'.

As características do code 39 facilitam a sua impressão e leitura, mas isto não é significativo para os dispositivos atuais (exceto no caso de se desejar usar um fonte de letra para gerar o código de barras). O código 128 (que veremos futuramente) permite codificar o conjunto completo de caracteres ASCII ocupando um espaço igual ou menor.

Um comentário:

Anônimo disse...

Estou procurando uma forma de programas meu leitor para ler o código 39 (parece ser este o código das plaquetas que usamos). Só que não consigo tirar o código de segurança. Pode ajudar? vofigueiredo@gmail.com.br. Se puder posso escanear uma plaqueta para verificar.