Code 128 è un codice a barre che permette di rappresentare tutti e 128 caratteri del codice ASCII (a 7 bit). Le specifiche di riferimento sono espresse dal ISO/IEC 15417:2007.
Prevede tre tipi di codifiche che possono coesistere contemporaneamente in un unico codice a barre: Code 128A, Code 128B, Code 128C.
Un'applicazione molto diffusa in ambito logistico del code 128 è il GS1-128.
Un sottoinsieme del Code 128, molto diffuso in ambito logistico (spedizioni e confezionamento), è il GS1-128 (conosciuto come UCC/EAN-128).
È usato per l'identificazione dei container e dei pallet nella catena di distribuzione. Lo standard di riferimento è ISO/IEC 15417:2007.
Specifiche
sezioni del codice a barre Code 128 (GS1-128). 1: Quiet zone, 2: Simbolo di start, 3: [FNC1]+codifica dei dati, 4: codice di controllo, 5: Simbolo di stop
Code 128 prevede 107 simboli: 103 simboli per i dati, 3 simboli di start, 1 simbolo di stop.
Per rappresentare tutti e 128 caratteri ASCII, ci sono tre set di caratteri (A, B, C), i quali possono essere fusi in un unico codice a barre (usando codici 98 e 99 tra i set di caratteri A e B, 100 tra i set di caratteri A e C, 101 tra i set di caratteri B e C):
128A (Code Set A) - codici ASCII da 00 a 95 (0-9, A-Z e codici di controllo), caratteri speciali, e FNC 1-4
128B (Code Set B) - codici ASCII da 32 a 127 (0-9, A-Z, a-z), caratteri speciali, e FNC 1-4
128C (Code Set C) - 00-99 (ciascuna coppia di numeri viene codificata con un solo codice) e FNC1
Quiet zone
Per Quiet zone si intende l'area che intercorre tra il codice a barre e altre linee verticali. La Quiet zone dovrebbe essere almeno dieci volte la larghezza della barra più stretta / elemento spazio. È obbligatoria sul lato destro e sinistro del codice a barre. La quiet zone non deve essere inferiore a 6,4 millimetri di larghezza.
Bit di Start/Bit di stop e codifica dei dati
Ogni carattere del codice a barre:
è composto da tre barre e tre spazi. (il bit di stop possiede un'ulteriore barra aggiuntiva di lunghezza 2)
ogni barra o spazio ha una larghezza di 1, 2, 3 o 4 unità di larghezza
la somma delle larghezze delle barre deve essere pari
la somma delle larghezze degli spazi deve essere dispari
la somma totale di barre e spazi deve essere uguale a 11 unità di larghezza per carattere
Per esempio, la codifica ASCII del valore 0 può essere vista come 10011101100, dove la cifra 1 (uno) è una barra e lo 0 è uno spazio. Una combinazione che contiene un singolo 1 sarebbe la linea più sottile del codice a barre. Una combinazione di tre 1 (111) in sequenza indica una barra tre volte più spessa rispetto ad una singola barra 1.
Calcolo del codice di controllo
Il codice di controllo è un Modulo 103 checksum. Viene calcolato sommando il 'valore' del codice di start ai prodotti di ogni carattere moltiplicato per la sua posizione nella stringa del codice a barre. Il carattere di start e il primo valore codificato è in posizione 1. La somma del valore del codice di start ed i prodotti vengono poi divisi per 103. Il resto della divisione è la cifra di controllo del 'valore' che viene poi convertito in un carattere aggiunto alla fine del codice a barre.
Utilizzo FNC4 per codificare i caratteri Latin-1 (160-255)
Funzione 4 (FNC4) può essere utilizzato per codificare, in un codice a barre Code 128, tutti i caratteri dello standard LATIN-1 (ISO-8859-1, ovvero una specifica dello ISO-8859).
Nei codici a barre vengono memorizzati i 7 bit meno significativi del carattere da codificare; viene usato il delimitatore FNC4 (singolo o doppio) per indicare che i caratteri sono ASCII esteso e che per essere decodificati deve venir sommato 128 al valore ASCII.
In fase di decodifica (da codice a barre a stringa), quando un singolo FNC4 è presente in una stringa, il carattere successivo sarà un carattere ASCII esteso (160-255). Per evitare di dover usare un FNC4 per ogni carattere ASCII esteso, è prevista una modalità per passare da ASCII standard ad ASCII esteso: tutto il testo in ASCII esteso dovrà essere delimitato da due coppie di FNC4. Un singolo FNC4 all'interno di due coppie FNC4, indica che il carattere successivo è un carattere ASCII standard.
Larghezze delle barre e degli spazi
Il Code128 prevede una combinazione di 6 barre e spazi per ogni carattere, tranne il carattere di stop, che ne utilizza 7.
Così, ogni carattere inizia con una barra e termina con uno spazio (con l'eccezione del carattere di stop, che termina con una barra). Le seguenti tabelle dettagliano le larghezze associate a ciascuna barra e spazio per ciascun carattere. La larghezza di ciascuna barra o spazio può essere di 1, 2, 3 o 4 unità. Nelle tabelle seguenti, una 'A' sarà rappresentata con il pattern 10100011000, o 111323 come sequenza delle larghezze di barre e spazi.