Code 128: come funziona, set di caratteri, cifra di controllo e cosa arriva al PC
Il Code 128 è il codice lineare più versatile: codifica tutti i 128 caratteri ASCII, è compatto e include sempre una cifra di controllo mod 103 che il lettore verifica e non trasmette. È lo standard per etichette di magazzino, spedizioni e codici interni. Lo leggono tutti i lettori ed è quasi sempre abilitato di fabbrica.
Come è fatto un Code 128
Un simbolo Code 128 è composto da:
- Zona di rispetto a sinistra, almeno 10 moduli.
- Carattere di start, che stabilisce il set di partenza: Start A, Start B o Start C.
- Caratteri dati: ognuno è largo 11 moduli e formato da 3 barre e 3 spazi, con larghezze da 1 a 4 moduli.
- Carattere di controllo mod 103.
- Stop (13 moduli) e zona di rispetto finale.
Il testo leggibile sotto il codice non contiene start, stop né cifra di controllo: mostra solo i dati.
I tre set di caratteri
| Set | Contenuto | Uso tipico |
|---|---|---|
| A | Maiuscole, cifre, punteggiatura e caratteri di controllo ASCII 0-31 | Dati con caratteri di controllo (Tab, CR) incorporati |
| B | Maiuscole, minuscole, cifre e punteggiatura (ASCII 32-127) | Testo misto, codici articolo alfanumerici |
| C | Coppie di cifre da 00 a 99, una coppia per carattere | Lunghe sequenze numeriche: dimezza la lunghezza |
Il generatore passa automaticamente da un set all'altro con i caratteri speciali CODE A/B/C e SHIFT, scegliendo la combinazione più corta. Per questo un codice di 12 cifre in Code 128 è molto più corto dello stesso in Code 39. I caratteri ASCII oltre il 127 (lettere accentate) si codificano con FNC4, ma il supporto è disomogeneo tra lettori e software: per etichette interne evita gli accenti.
Cifra di controllo mod 103
La cifra di controllo è obbligatoria e viene calcolata automaticamente dal software che genera il codice. Si sommano il valore dello start e i valori di ogni carattere moltiplicati per la loro posizione (1, 2, 3...), poi si prende il resto della divisione per 103.
Esempio in set B con il testo ABC: Start B vale 104; in set B il valore di un carattere è il suo codice ASCII meno 32, quindi A = 33, B = 34, C = 35. Somma: 104 + 33×1 + 34×2 + 35×3 = 104 + 33 + 68 + 105 = 310. 310 mod 103 = 1. Il carattere di controllo è quello di valore 1.
Il lettore verifica il controllo e poi lo scarta: non viene mai trasmesso e non esiste un'opzione per farlo arrivare. Se nel gestionale ti serve una cifra di controllo (per esempio quella di un GTIN o di un SSCC), deve far parte dei dati codificati, come avviene nel GS1-128. Le altre cifre di controllo sono spiegate nella pagina sulla cifra di controllo.
FNC1 e la differenza con GS1-128
Il Code 128 dispone di quattro caratteri funzione (FNC1-FNC4) che non corrispondono a caratteri ASCII. Il più importante è FNC1: se è il primo carattere dopo lo start, il codice diventa un GS1-128 e i dati seguono la sintassi degli Application Identifier. Se compare più avanti, fa da separatore tra campi a lunghezza variabile e il lettore lo trasmette come carattere GS (ASCII 29). In emulazione tastiera questo carattere crea spesso problemi: vedi carattere GS e FNC1.
Lettori compatibili e impostazioni
Il Code 128 si legge con laser, imager lineari, imager 2D e smartphone. È di solito abilitato di fabbrica; il GS1-128 a volte ha un'opzione separata. Impostazioni da conoscere:
| Opzione | Default frequente | Quando cambiarla |
|---|---|---|
| Lunghezza minima e massima | Ampia (per esempio da 1 a 80 caratteri, varia per modello) | Se compaiono letture parziali, restringi l'intervallo alle lunghezze reali |
| GS1-128 (UCC/EAN-128) | Spesso abilitato | Disabilitalo se non usi codici GS1 e vuoi escluderli |
| Trasmissione FNC1 / carattere GS | Varia | Se il separatore non arriva o produce caratteri strani |
| Concatenazione (append) | Disabilitata | Quasi mai: unisce più codici in uno |
| ISBT 128 | Disabilitato | Solo per centri trasfusionali |
I nomi esatti e i valori predefiniti sono nel manuale del tuo modello; la procedura generale è nella guida su come abilitare le simbologie.
Cosa riceve il PC
Arrivano solo i dati, seguiti dal suffisso (di solito Invio). Se attivi l'identificatore AIM, il Code 128 standard è preceduto da ]C0, il GS1-128 da ]C1.
Etichetta ubicazione: MAG-A12-03<CR> Stessa, con AIM ID: ]C0MAG-A12-03<CR> Stessa, lettore US su PC IT: MAG'A12'03<CR>
L'ultima riga mostra l'errore più frequente in Italia: il trattino diventa apostrofo perché il lettore usa il layout tastiera US. Le lettere e le cifre restano corrette, quindi il problema si nota solo sui codici con simboli. Soluzione in il lettore scrive caratteri sbagliati.
Problemi di lettura comuni
- Codici molto lunghi stampati su etichette strette diventano ad alta densità: un laser economico o un lettore con campo stretto fatica. Usa caratteri numerici in coppia (set C), riduci i dati o passa a un 2D. Vedi codici piccoli e alta densità.
- Margini tagliati: molte stampanti di etichette mettono il codice a filo del bordo. Senza i 10 moduli di zona di rispetto la lettura diventa intermittente.
- Stampa termica con testina usurata: le righe bianche verticali spezzano le barre. Il lettore legge "a tratti" o non legge. Controlla la testina.
- Lettere minuscole che arrivano maiuscole (o il contrario): il PC ha il Blocco Maiuscole attivo. Vedi maiuscole, minuscole e blocco maiuscole.
Per stampare un'etichetta di prova Code 128 e verificare che il lettore trasmetta esattamente quello che ti aspetti, usa il generatore di codici a barre e poi il test del lettore: inserisci un trattino, una barra e una minuscola nel testo, così verifichi in un colpo solo layout tastiera e maiuscole.
Domande frequenti
Code 128 o Code 39 per le etichette interne?
Code 128, salvo vincoli di compatibilità con vecchi sistemi. È più compatto, gestisce minuscole e simboli e ha un controllo obbligatorio. Il confronto è nella pagina Code 39.
Qual è la lunghezza massima di un Code 128?
Lo standard non fissa un limite rigido; il vincolo pratico è la larghezza fisica e la capacità del lettore. Oltre 30-40 caratteri conviene un codice 2D. Il GS1-128 invece ha un massimo di 48 caratteri dati.
Perché la cifra di controllo non compare nei dati letti?
Perché nel Code 128 serve solo al lettore per validare la lettura: viene sempre rimossa prima della trasmissione.
Fonti e riferimenti
Altro in Tipi di codici a barre
- Tipi di codici a barre: tabella comparativa completa
- Codici lineari e codici 2D: differenze e lettori adatti
- Data Matrix e GS1 DataMatrix: struttura e lettura
- EAN-13 ed EAN-8: struttura, prefissi e lettura
- GS1 DataBar: varianti, uso e impostazioni del lettore
- Interleaved 2 of 5 e ITF-14: struttura e lettura
- PDF417: struttura, capacità e lettori compatibili
- QR Code: struttura, capacità e lettura con lo scanner
- UPC-A e UPC-E: struttura, conversioni e lettura