Code 128

Da Wikipedia, l'enciclopedia libera.
"Wikipedia" in Code 128B

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.

Applicazioni[modifica | modifica sorgente]

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 supply chain. Lo standard di riferimento è ISO/IEC 15417:2007.

Specifiche[modifica | modifica sorgente]

"Code 128 sections"
sezioni del codice a barre Code 128 (GS1-128). 1: Quiet zone, 2: Bit di Start/bit di stop, 3: [FNC1]+codifica dei dati, 4: codice di controllo

Un codice a barre Code 128 prevede sei sezioni:

  • Quiet Zone ovvero l'area che intercorre tra il barcode e altre linee verticali
  • carattere di start
  • codifica dei dati
  • codice di controllo
  • bit di stop
  • Quiet Zone ovvero l'area che intercorre tra il barcode e altre linee verticali

Il codice di controllo è calcolato da una Produttoria (modulo 103) di tutti i caratteri.


Tipologie di Code 128[modifica | modifica sorgente]

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 caratteri viene codificata con un solo codice) e FNC1

Quiet zone[modifica | modifica sorgente]

Per Quiet zone si intende l'area che intercorre tra il barcode 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[modifica | modifica sorgente]

Ogni carattere del codice a barre:

  • è composto da tre barre e tre spazi. (il bit di stop possiede una 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 un barra tre volte più spessa rispetto una singola barra 1.

Calcolo del codice di controllo[modifica | modifica sorgente]

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 e aggiunto alla fine del codice a barre.

Utilizzo FNC4 per codificare i caratteri Latin-1 (128-255)[modifica | modifica sorgente]

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). Nel barcode vengono memorizzati i 7 bit meno significativi del carattere da codificare; viene usato il delimitatore FNC4(singolo o in copia) per indicare che i caratteri sono ASCII esteso e che per essere decodificati deve venir sommato 128. In fase di decodifica (da barcode a stringa), quando un singolo FNC4 è presente in una stringa, il carattere successivo sarà un carattere ASCII esteso(128-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[modifica | modifica sorgente]

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 in un bar). 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 come 111323 nelle tabelle seguenti.


Code 128
Valore 128A 128B 128C codice ASCII (Common/Barcodesoft) Caratteri (Common/Barcodesoft) Pattern delle Barre/Spazi Larghezza delle Barre/Spazi
0 spazio space 00 0032 or 0212 / 252 Space or Ô / ü 11011001100 212222
1  !  ! 01 33  ! 11001101100 222122
2 " " 02 34 " 11001100110 222221
3 # # 03 35 # 10010011000 121223
4 $ $ 04 36 $ 10010001100 121322
5  %  % 05 37  % 10001001100 131222
6 & & 06 38 & 10011001000 122213
7 ' ' 07 39 ' 10011000100 122312
8 ( ( 08 40 ( 10001100100 132212
9 ) ) 09 41 ) 11001001000 221213
10 * * 10 42 * 11001000100 221312
11 + + 11 43 + 11000100100 231212
12 , , 12 44 , 10110011100 112232
13 - - 13 45 - 10011011100 122132
14 . . 14 46 . 10011001110 122231
15 / / 15 47 / 10111001100 113222
16 0 0 16 48 0 10011101100 123122
17 1 1 17 49 1 10011100110 123221
18 2 2 18 50 2 11001110010 223211
19 3 3 19 51 3 11001011100 221132
20 4 4 20 52 4 11001001110 221231
21 5 5 21 53 5 11011100100 213212
22 6 6 22 54 6 11001110100 223112
23 7 7 23 55 7 11101101110 312131
24 8 8 24 56 8 11101001100 311222
25 9 9 25 57 9 11100101100 321122
26  :  : 26 58  : 11100100110 321221
27  ;  ; 27 59  ; 11101100100 312212
28 < < 28 60 < 11100110100 322112
29 = = 29 61 = 11100110010 322211
30 > > 30 62 > 11011011000 212123
31  ?  ? 31 63  ? 11011000110 212321
32 @ @ 32 64 @ 11000110110 232121
33 A A 33 65 A 10100011000 111323
34 B B 34 66 B 10001011000 131123
35 C C 35 67 C 10001000110 131321
36 D D 36 68 D 10110001000 112313
37 E E 37 69 E 10001101000 132113
38 F F 38 70 F 10001100010 132311
39 G G 39 71 G 11010001000 211313
40 H H 40 72 H 11000101000 231113
41 I I 41 73 I 11000100010 231311
42 J J 42 74 J 10110111000 112133
43 K K 43 75 K 10110001110 112331
44 L L 44 76 L 10001101110 132131
45 M M 45 77 M 10111011000 113123
46 N N 46 78 N 10111000110 113321
47 O O 47 79 O 10001110110 133121
48 P P 48 80 P 11101110110 313121
49 Q Q 49 81 Q 11010001110 211331
50 R R 50 82 R 11000101110 231131
51 S S 51 83 S 11011101000 213113
52 T T 52 84 T 11011100010 213311
53 U U 53 85 U 11011101110 213131
54 V V 54 86 V 11101011000 311123
55 W W 55 87 W 11101000110 311321
56 X X 56 88 X 11100010110 331121
57 Y Y 57 89 Y 11101101000 312113
58 Z Z 58 90 Z 11101100010 312311
59 [ [ 59 91 [ 11100011010 332111
60 \ \ 60 92 \ 11101111010 314111
61 ] ] 61 93 ] 11001000010 221411
62 ^ ^ 62 94 ^ 11110001010 431111
63 _ _ 63 95 _ 10100110000 111224
64 NUL ` 64 96 ` 10100001100 111422
65 SOH a 65 97 a 10010110000 121124
66 STX b 66 98 b 10010000110 121421
67 ETX c 67 99 c 10000101100 141122
68 EOT d 68 100 d 10000100110 141221
69 ENQ e 69 101 e 10110010000 112214
70 ACK f 70 102 f 10110000100 112412
71 BEL g 71 103 g 10011010000 122114
72 BS h 72 104 h 10011000010 122411
73 HT i 73 105 i 10000110100 142112
74 LF j 74 106 j 10000110010 142211
75 VT k 75 107 k 11000010010 241211
76 FF l 76 108 l 11001010000 221114
77 CR m 77 109 m 11110111010 413111
78 SO n 78 110 n 11000010100 241112
79 SI o 79 111 o 10001111010 134111
80 DLE p 80 112 p 10100111100 111242
81 DC1 q 81 113 q 10010111100 121142
82 DC2 r 82 114 r 10010011110 121241
83 DC3 s 83 115 s 10111100100 114212
84 DC4 t 84 116 t 10011110100 124112
85 NAK u 85 117 u 10011110010 124211
86 SYN v 86 118 v 11110100100 411212
87 ETB w 87 119 w 11110010100 421112
88 CAN x 88 120 x 11110010010 421211
89 EM y 89 121 y 11011011110 212141
90 SUB z 90 122 z 11011110110 214121
91 ESC { 91 123 { 11110110110 412121
92 FS | 92 124 | 10101111000 111143
93 GS } 93 125 } 10100011110 111341
94 RS ~ 94 126 ~ 10001011110 131141
95 US DEL 95 200 / 240 È / ð 10111101000 114113
96 FNC 3 FNC 3 96 201 / 241 É / ñ 10111100010 114311
97 FNC 2 FNC 2 97 202 / 242 Ê / ò 11110101000 411113
98 Shift B Shift A 98 203 / 243 Ë / ó 11110100010 411311
99 Code C Code C 99 204 / 244 Ì / ô 10111011110 113141
100 Code B FNC4 Code B 205 / 245 Í / õ 10111101110 114131
101 FNC 4 Code A Code A 206 / 246 Î / ö 11101011110 311141
102 FNC 1 FNC 1 FNC 1 207 / 247 Ï / ÷ 11110101110 411131
103 Start Code A 208 / 248 Ð / ø 11010000100 211412
104 Start Code B 209 / 249 Ñ / ù 11010010000 211214
105 Start Code C 210 / 250 Ò / ú 11010011100 211232
106 Stop (7 barre/spazi) 211 / 251 Ó / û 1100011101011 2331112
non usati per prevenire errori di lettura 11010111000 211133

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]