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
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:
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.
Postar um comentário