terça-feira, abril 15, 2008

Código de Barras - Código 128


A simbologia Code 128 procura corrigir as deficiências das simbologias vistas anteriormente, apresentando as seguintes características:


  • Capacidade de codificação de todo o conjunto ASCII (0x00 a 0x7F)
  • Possibilidade de codificação compacta de códigos numéricos
  • Checksum obrigatório, para maior confiabilidade
O Code 128 utiliza barras e espaços de tamanhos diversos (porém sempre múltiplos do módulo), organizados em 107 símbolos com largura de 11 módulos. O caracter correspondente a cada símbolo depende do conjunto de caracteres (subset) sendo usado. A marca de início do código indica o subset sendo utilizado inicialmente, símbolos especiais permitem alterar o subset no meio do código.

Existem 3 subsets, denominados A, B e C. O subset A permite codificar dígitos isolados, letras maiúsculas, caracteres especiais e os caracteres de controle. O subset B é semelhante ao A, porém os caracteres de controle são substituídos pelas letras minúsculas. No subset C, cada símbolo corresponde a um par de dígitos permitindo codificar números de forma compacta (como no intercalado 2de5).

Um código de barras Code 128 é composto por um Símbolo inicial (Start-A, Start-B ou Start-C), os símbolos correspondentes ao conteúdo, um símbolo com o checksum e o símbolo final (STOP) seguido de uma barra de largura dupla (poderíamos também considerar que o STOP possui largura 13 ao invés de 11).

As sequências de barra e espaços utilizadas pelo Code 128 são as seguintes (clique para ampliar):


onde '0' é um espaço e '1' é uma barra.

Um código composto de 'n' letras terá, portanto, a largura

11*(n+3)+2

11 = largura de um símbolo
3 = símbolos de início, checksum e fim
2 = barra dupla no vinal

Já um código com 'n' dígitos (n par) terá a largura 11*(n/2+3)+2 = 5,5*n + 35, o que é mais compacto que os 7*n+16 módulos do intercalado 2 de 5 sem checksum para n maior que 12. Além do checksum, o Code128 é mais seguro que o intercalado por ter marcas de início e fim.

O checksum é calculado somando-se o código do símbolo inicial aos códigos dos símbolos do conteúdo com peso 1, 2, 3, ... (da esquerda para a direita) e pegando-se o resto da divisão do total por 103.

Por exemplo, vamos considerar a codificação de DQSoft:

(104 + 1*36 + 2*49 + 3*51 + 4*79 + 5*70 + 6*84) mod 103 = 16

Quando um símbolo FNC1 é colocado logo depois do start, o conteúdo do código deve seguir uma estrutura definida. É o chamado GS1-128 (antigamente conhecido como UCC/EAN-128), que veremos no próximo post da série.

Nenhum comentário: