Code 39: set di caratteri, cifra di controllo mod 43, Code 32 dei farmaci e impostazioni del lettore
Il Code 39 è un codice lineare alfanumerico che codifica 43 caratteri: cifre, lettere maiuscole, spazio e i simboli - . $ / + %, racchiusi tra asterischi di start e stop. La cifra di controllo mod 43 è facoltativa. In Italia lo trovi sulla tessera sanitaria e, nella variante Code 32, sul bollino dei farmaci. Tutti i lettori lo leggono.
Struttura del simbolo
Ogni carattere è formato da 9 elementi (5 barre e 4 spazi), di cui 3 larghi: da qui il nome tecnico "3 of 9". Tra un carattere e l'altro c'è uno spazio di separazione, perché i caratteri sono indipendenti (simbologia discreta). Il rapporto tra elemento largo e stretto è di solito compreso tra 2:1 e 3:1: più è alto, più il codice è tollerante.
Il carattere * è riservato a start e stop. Quando leggi *ABC123* sotto un codice, gli asterischi non fanno parte dei dati e il lettore normalmente non li trasmette.
Il prezzo di questa semplicità è lo spazio: Code 39 è molto meno denso di Code 128. Un codice fiscale di 16 caratteri in Code 39 occupa parecchi centimetri, ed è per questo che sulla tessera sanitaria il codice è lungo e sottile.
Modalità Full ASCII
Per codificare minuscole e altri simboli, il Code 39 usa coppie di caratteri: per esempio +A rappresenta la a minuscola, /A il punto esclamativo. Il lettore interpreta queste coppie solo se l'opzione Code 39 Full ASCII è attiva, e spesso non lo è di fabbrica. Le conseguenze:
| Dati nel simbolo | Full ASCII disattivo | Full ASCII attivo |
|---|---|---|
+C+O+D+E | +C+O+D+E | code |
AB-12/3 | AB-12/3 | AB-12/3 (nessuna coppia valida) |
A/B | A/B | A" (la coppia /B viene convertita) |
L'ultima riga mostra il rischio: con Full ASCII attivo, codici normali che contengono /, +, $ o % seguiti da una lettera possono essere trasformati. Attivalo solo se sai che i tuoi codici lo usano.
Cifra di controllo mod 43
A ogni carattere corrisponde un valore: cifre 0-9 = 0-9, lettere A-Z = 10-35, - = 36, . = 37, spazio = 38, $ = 39, / = 40, + = 41, % = 42. Si sommano i valori di tutti i caratteri dati e si prende il resto della divisione per 43; il carattere corrispondente si aggiunge prima dello stop.
Esempio con AB-12: A = 10, B = 11, - = 36, 1 = 1, 2 = 2. Somma 60. 60 mod 43 = 17, che corrisponde alla lettera H. Il simbolo completo contiene AB-12H.
Sul lettore l'opzione ha di solito tre stati:
- Non verificare (default più comune): il lettore trasmette tutto, controllo compreso se presente, senza sapere che lo è.
- Verifica e trasmetti: scarta i codici con controllo errato e invia
AB-12H. - Verifica e non trasmettere: scarta i codici errati e invia
AB-12.
Se attivi la verifica e i tuoi codici non hanno la cifra mod 43, il lettore smette di leggerli del tutto: nessun beep, oppure un beep di errore. È una causa frequente di "il lettore legge tutto tranne le nostre etichette". Altre cause in il lettore legge solo alcuni codici.
Code 32: il codice dei farmaci italiani
Il bollino farmaceutico italiano riporta il codice AIC (9 cifre, l'ultima di controllo) codificato con il Code 32, chiamato anche Italian Pharmacode: il numero viene convertito in base 32 e stampato come 6 caratteri Code 39. Un lettore che non conosce il Code 32 legge il simbolo come un normale Code 39 e trasmette 6 caratteri alfanumerici incomprensibili, invece del codice AIC.
Per ottenere il codice corretto devi attivare l'opzione Code 32 (a volte "Italian Pharmacode" o "Code 39 to Code 32"), che spesso è disattivata di fabbrica, e decidere se aggiungere il prefisso A che molti gestionali di farmacia si aspettano:
Code 32 disattivo: caratteri Code 39 grezzi (6 alfanumerici) Code 32 attivo: 012345676 Code 32 con prefisso A: A012345676
I valori sono esempi di formato. Il passaggio ai codici Data Matrix con identificativo univoco previsto dalla normativa europea sui medicinali è in corso secondo il calendario AIFA/Ministero: un lettore per farmacia deve quindi essere un imager 2D. Approfondisci in lettori in farmacia e Data Matrix.
Tessera sanitaria e codice fiscale
Sul fronte della tessera sanitaria il codice fiscale è stampato in Code 39. Si legge con qualsiasi lettore, a patto che Code 39 sia abilitato e che la lunghezza massima impostata non sia inferiore a 16 caratteri. Il codice fiscale contiene solo lettere maiuscole e cifre, quindi il layout tastiera non lo altera. Dettagli in tessera sanitaria e codice fiscale.
Lettori, impostazioni di fabbrica e uscita
Laser, imager lineari, imager 2D e smartphone leggono il Code 39. È abilitato di fabbrica su molti lettori, ma non su tutti: alcuni modelli recenti lo lasciano attivo e disattivano il Full ASCII e il Code 32, altri hanno limiti di lunghezza minima (per esempio 2 o 4 caratteri) che escludono codici molto corti. Verifica sul manuale.
| Configurazione | Uscita per il simbolo AB-12H |
|---|---|
| Default, AIM attivo | ]A0AB-12H |
| Verifica e trasmetti controllo | ]A1AB-12H |
| Verifica e non trasmettere | ]A3AB-12 |
| Lettore US su PC italiano | AB'12H |
Il modificatore dopo ]A segnala lo stato del controllo e del Full ASCII; i valori riportati sono quelli più comuni, verifica nella sezione AIM del manuale. L'ultima riga è il classico problema di layout: un lettore impostato su tastiera US su un PC italiano trasforma - in ' e / in -. Vedi impostare la tastiera italiana.
Problemi di lettura comuni
- Letture parziali di codici lunghi: se il lettore laser non copre l'intero simbolo, non legge. Allontanalo per far entrare tutto il codice, zone di rispetto comprese.
- Rapporto largo/stretto troppo basso in etichette generate con software economici: alza il rapporto a 3:1.
- Codice letto come un'altra simbologia: raro, ma un Code 39 molto corto può essere confuso. Imposta una lunghezza minima adeguata.
- Asterischi che compaiono nei dati: è attiva l'opzione di trasmissione di start/stop. Disattivala.
Domande frequenti
Per generare un Code 39 devo scrivere gli asterischi?
Dipende dal software: i generatori dedicati li aggiungono da soli; con i font barcode in Word o Excel devi scriverli tu, per esempio *ABC123*.
Il Code 39 può contenere lettere minuscole?
Solo in modalità Full ASCII, con le coppie di caratteri, e solo se il lettore ha l'opzione attiva. In alternativa usa il Code 128.
Perché il codice del farmaco arriva come lettere strane?
Il lettore legge il bollino come Code 39 normale. Attiva l'opzione Code 32 (Italian Pharmacode) sul lettore.
Fonti e riferimenti
- ISO/IEC 16388, specifica della simbologia Code 39, ISO
- AIFA, informazioni su bollino e tracciabilità dei medicinali, aifa.gov.it
- Product Reference Guide dei lettori Zebra, Honeywell, Datalogic: opzioni Code 39, Full ASCII, Code 32 e identificatori AIM
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-128 e Application Identifier: guida pratica
- 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