Codice 128 - Code 128
Il codice 128 è una simbologia di codice a barre lineare ad alta densità definita in ISO/IEC 15417:2007. Viene utilizzato per codici a barre alfanumerici o solo numerici . Può codificare tutti i 128 caratteri di ASCII e, utilizzando un simbolo di estensione (FNC4), i caratteri Latin-1 definiti in ISO/IEC 8859-1 .. In genere risulta in codici a barre più compatti rispetto ad altri metodi come Code 39 , soprattutto quando i testi contengono principalmente cifre.
GS1-128 (precedentemente noto come UCC/EAN-128) è un sottoinsieme del codice 128 ed è ampiamente utilizzato in tutto il mondo nelle industrie di spedizione e imballaggio come codice di identificazione del prodotto per i livelli di container e pallet nella catena di approvvigionamento.
Specifiche
Un codice a barre Code 128 ha sette sezioni:
- Zona tranquilla
- Simbolo di inizio
- Dati codificati
- Simbolo di spunta (obbligatorio)
- Simbolo di arresto
- Barra finale (spesso considerata parte del simbolo di stop)
- Zona tranquilla
Il simbolo di spunta viene calcolato da una somma ponderata ( modulo 103) di tutti i simboli.
sottotipi
Il codice 128 include 108 simboli: 103 simboli di dati, 3 simboli di inizio e 2 simboli di arresto. Ciascun simbolo è composto da tre barre nere e tre spazi bianchi di larghezza variabile. Tutte le larghezze sono multipli di un "modulo" di base. Ogni barra e ogni spazio è largo da 1 a 4 moduli e i simboli sono a larghezza fissa: la somma delle larghezze delle tre barre nere e delle tre barre bianche è di 11 moduli.
Il pattern di stop è composto da due simboli sovrapposti e ha quattro barre. Il modello di arresto consente la scansione bidirezionale. Quando lo schema di arresto viene letto da sinistra a destra (caso normale), viene riconosciuto il simbolo di arresto (seguito da una barra a 2 moduli). Quando lo schema di arresto viene letto da destra a sinistra, viene riconosciuto il simbolo di arresto inverso (seguito da una barra a 2 moduli). Uno scanner che vede il simbolo di arresto inverso sa che deve saltare la barra a 2 moduli e leggere il resto del codice a barre al contrario.
Nonostante il nome, il codice 128 non ha 128 simboli distinti, quindi non può rappresentare direttamente 128 punti di codice. Per rappresentare tutti i 128 valori ASCII, si sposta tra tre serie di codici (A, B, C). Insieme, i set di codici A e B coprono tutti i 128 caratteri ASCII. Il set di codici C viene utilizzato per codificare in modo efficiente le stringhe di cifre. Il sottoinsieme iniziale viene selezionato utilizzando il simbolo di inizio appropriato. All'interno di ciascuna serie di codici, alcuni dei 103 punti di codice dati sono riservati per il passaggio a una delle altre due serie di codici. Gli spostamenti vengono eseguiti utilizzando i punti di codice 98 e 99 nei gruppi di codici A e B, 100 nei gruppi di codici A e C e 101 nei gruppi di codici B e C per passare da uno all'altro):
- 128A (Set di codici A) – Caratteri ASCII da 00 a 95 (0–9, A–Z e codici di controllo), caratteri speciali e FNC 1–4
- 128B (Set di codici B) – Caratteri ASCII da 32 a 127 (0–9, A–Z, a–z), caratteri speciali e FNC 1–4
- 128C (Code Set C) – 00–99 (codifica due cifre con un unico punto di codice) e FNC1
La larghezza minima della zona tranquilla a sinistra ea destra del Code 128 è 10x, dove x è la larghezza minima di un modulo. È obbligatorio sul lato sinistro e destro del codice a barre.
Avvio/arresto e dati codificati
Ogni simbolo nel codice a barre è composto da tre barre e tre spazi. Ogni barra o spazio è largo 1, 2, 3 o 4 unità, la somma delle larghezze delle barre deve essere pari (4, 6 o 8 unità), la somma delle larghezze degli spazi deve essere dispari (3, 5 o 7 unità) e un totale di 11 unità per simbolo. Ad esempio, la codifica del carattere ASCII "0" può essere visualizzata come 10011101100, dove una sequenza di 1 è una barra e una sequenza di 0 è uno spazio. Un singolo 1 sarebbe la linea più sottile nel codice a barre. Tre 1 in sequenza (111) indicano una barra tre volte più spessa di una singola barra.
Esistono 108 possibili simboli larghi 11 unità e il codice utilizza tutti i simboli possibili. Due dei simboli vengono utilizzati per l'indicazione di stop (fine del codice a barre), stop e stop inverso. I due simboli di stop sono speciali perché sono sempre seguiti da una barra di 2 unità, che forma uno schema di stop lungo 13 unità. La lettura dello schema di arresto da sinistra a destra è il simbolo di arresto (seguito da una barra di 2 unità) e la lettura dello schema di arresto da destra a sinistra è il simbolo di arresto inverso (seguito da una barra di 2 unità).
Calcolo della cifra di controllo
La cifra di controllo è un checksum modulo-103 pesato. Viene calcolato sommando il "valore" del codice iniziale ai prodotti del "valore" di ciascun simbolo moltiplicato per la sua posizione nella stringa del codice a barre. Il simbolo di partenza e il primo simbolo codificato sono in posizione 1. La somma dei prodotti viene quindi ridotta modulo 103. Il resto viene quindi riconvertito in uno dei 103 simboli non delimitatori (seguendo le istruzioni riportate di seguito ) e aggiunto al codice a barre , immediatamente prima del simbolo di stop.
Ad esempio, nella tabella seguente, viene calcolato il valore di checksum della variante codice 128 A per la stringa alfanumerica PJJ123C:
| Codice | Valore | Posizione | Valore × posizione |
|---|---|---|---|
| Codice di inizio A | 103 | 1 | 103 |
| P | 48 | 1 | 48 |
| J | 42 | 2 | 84 |
| J | 42 | 3 | 126 |
| 1 | 17 | 4 | 68 |
| 2 | 18 | 5 | 90 |
| 3 | 19 | 6 | 114 |
| C | 35 | 7 | 245 |
| Somma | 878 | ||
| Resto mod 103 | 54 | ||
Ai fini del calcolo del simbolo di spunta, i simboli shift e code-switch sono trattati come qualsiasi altro simbolo nel codice a barre. Il checksum viene calcolato sui valori dei simboli, indipendentemente dal set di codici attivo in quel momento. Ad esempio, il valore "33" della serie di codici C e il valore "A" della serie di codici B sono entrambi considerati un valore Code 128 di 33 e la cifra di controllo viene calcolata in base al valore di 33 volte la posizione del simbolo all'interno del codice a barre .
Utilizzo di FNC4 per codificare caratteri alti (128–255)
Il simbolo speciale FNC4 ("Funzione 4"), presente solo nei set di codici A e B, può essere utilizzato per codificare tutti i caratteri Latin-1 ( ISO-8859-1 ) in un codice a barre Code 128. La funzione non è ampiamente supportata e non è utilizzata in GS1-128. Quando un singolo FNC4 è presente in una stringa, il seguente simbolo viene convertito in ASCII come al solito, quindi 128 viene aggiunto al valore ASCII. (Se il simbolo seguente è uno spostamento, verrà utilizzato un secondo simbolo per ottenere il carattere.) Se vengono utilizzati due FNC4 consecutivamente, tutti i caratteri successivi verranno trattati come tali, fino alla fine della stringa o un'altra coppia di FNC4 . Tra i doppi FNC4, verrà utilizzato un singolo FNC4 per indicare che il carattere successivo sarà ASCII standard .
Larghezze del codice a barre
Code128 specifica una combinazione di 6 barre e spazi alternati (3 di ciascuno) per ogni simbolo. Pertanto, ogni simbolo inizia con una barra e termina con uno spazio. Nei caratteri dei codici a barre, la barra finale è generalmente combinata con il simbolo di arresto per creare un motivo di arresto più ampio. La tabella seguente descrive le larghezze associate a ciascuna barra e lo spazio per ogni simbolo. La larghezza di ogni barra o spazio può essere di 1, 2, 3 o 4 unità (moduli). Utilizzando l'esempio sopra, una 'A' verrebbe rappresentata con il motivo 10100011000 o come larghezze 111323 nelle tabelle seguenti.
Il valore delle larghezze è derivato contando la lunghezza di ogni sequenza di 1 e poi di 0 nel modello, a partire da sinistra. Ci saranno sempre 6 corse e le lunghezze di queste 6 corse formano il valore Larghezze. Ad esempio, utilizzando il modello 10100011000, le lunghezze della corsa sono 1 (cifra 1), 1 (cifra 0), 1 (cifra 1), 3 (cifra 0), 2 (cifra 1), 3 (cifra 0). Riportare solo le lunghezze di ciascuna corsa dà 1, 1, 1, 3, 2, 3, producendo così un valore delle larghezze di 111323.
| Valore | Valore esadecimale | 128A | 128B | 128C | Posizione del carattere (Comune/Non comune/Barcodesoft) |
Bar/Spazio | ||
|---|---|---|---|---|---|---|---|---|
| Codice | latino-1 | Modello | larghezze | |||||
| 0 | 00 | spazio | spazio | 00 | 32 o 194 o 207/212/252 | ␣ o  o Ï / Ô / ü | 11011001100 | 212222 |
| 1 | 01 | ! | ! | 01 | 33 | ! | 11001101100 | 222122 |
| 2 | 02 | " | " | 02 | 34 | " | 11001100110 | 222221 |
| 3 | 03 | # | # | 03 | 35 | # | 10010011000 | 121223 |
| 4 | 04 | $ | $ | 04 | 36 | $ | 10010001100 | 121322 |
| 5 | 05 | % | % | 05 | 37 | % | 10001001100 | 131222 |
| 6 | 06 | & | & | 06 | 38 | & | 10011001000 | 122213 |
| 7 | 07 | ' | ' | 07 | 39 | ' | 10011000100 | 122312 |
| 8 | 08 | ( | ( | 08 | 40 | ( | 10001100100 | 132212 |
| 9 | 09 | ) | ) | 09 | 41 | ) | 11001001000 | 221213 |
| 10 | 0a | * | * | 10 | 42 | * | 11001000100 | 221312 |
| 11 | 0b | + | + | 11 | 43 | + | 11000100100 | 231212 |
| 12 | 0c | , | , | 12 | 44 | , | 10110011100 | 112232 |
| 13 | 0d | - | - | 13 | 45 | - | 10011011100 | 122132 |
| 14 | 0e | . | . | 14 | 46 | . | 10011001110 | 122231 |
| 15 | 0f | / | / | 15 | 47 | / | 10111001100 | 113222 |
| 16 | 10 | 0 | 0 | 16 | 48 | 0 | 10011101100 | 123122 |
| 17 | 11 | 1 | 1 | 17 | 49 | 1 | 10011100110 | 123221 |
| 18 | 12 | 2 | 2 | 18 | 50 | 2 | 11001110010 | 223211 |
| 19 | 13 | 3 | 3 | 19 | 51 | 3 | 11001011100 | 221132 |
| 20 | 14 | 4 | 4 | 20 | 52 | 4 | 11001001110 | 221231 |
| 21 | 15 | 5 | 5 | 21 | 53 | 5 | 11011100100 | 213212 |
| 22 | 16 | 6 | 6 | 22 | 54 | 6 | 11001110100 | 223112 |
| 23 | 17 | 7 | 7 | 23 | 55 | 7 | 11101101110 | 312131 |
| 24 | 18 | 8 | 8 | 24 | 56 | 8 | 11101001100 | 311222 |
| 25 | 19 | 9 | 9 | 25 | 57 | 9 | 11100101100 | 321122 |
| 26 | 1a | : | : | 26 | 58 | : | 11100100110 | 321221 |
| 27 | 1b | ; | ; | 27 | 59 | ; | 11101100100 | 312212 |
| 28 | 1c | < | < | 28 | 60 | < | 11100110100 | 322112 |
| 29 | 1d | = | = | 29 | 61 | = | 11100110010 | 322211 |
| 30 | 1e | > | > | 30 | 62 | > | 11011011000 | 212123 |
| 31 | 1f | ? | ? | 31 | 63 | ? | 11011000110 | 212321 |
| 32 | 20 | @ | @ | 32 | 64 | @ | 11000110110 | 232121 |
| 33 | 21 | UN | UN | 33 | 65 | UN | 10100011000 | 111323 |
| 34 | 22 | B | B | 34 | 66 | B | 10001011000 | 131123 |
| 35 | 23 | C | C | 35 | 67 | C | 10001000110 | 131321 |
| 36 | 24 | D | D | 36 | 68 | D | 10110001000 | 112313 |
| 37 | 25 | E | E | 37 | 69 | E | 10001101000 | 132113 |
| 38 | 26 | F | F | 38 | 70 | F | 1000110010 | 132311 |
| 39 | 27 | G | G | 39 | 71 | G | 11010001000 | 211313 |
| 40 | 28 | h | h | 40 | 72 | h | 11000101000 | 231113 |
| 41 | 29 | io | io | 41 | 73 | io | 11000100010 | 231311 |
| 42 | 2a | J | J | 42 | 74 | J | 10110111000 | 112133 |
| 43 | 2b | K | K | 43 | 75 | K | 10110001110 | 112331 |
| 44 | 2c | l | l | 44 | 76 | l | 10001101110 | 132131 |
| 45 | 2d | m | m | 45 | 77 | m | 10111011000 | 113123 |
| 46 | 2e | n | n | 46 | 78 | n | 10111000110 | 113321 |
| 47 | 2f | oh | oh | 47 | 79 | oh | 10001110110 | 133121 |
| 48 | 30 | P | P | 48 | 80 | P | 11101110110 | 313121 |
| 49 | 31 | Q | Q | 49 | 81 | Q | 11010001110 | 211331 |
| 50 | 32 | R | R | 50 | 82 | R | 11000101110 | 231131 |
| 51 | 33 | S | S | 51 | 83 | S | 11011101000 | 213113 |
| 52 | 34 | T | T | 52 | 84 | T | 11011100010 | 213311 |
| 53 | 35 | tu | tu | 53 | 85 | tu | 11011101110 | 213131 |
| 54 | 36 | V | V | 54 | 86 | V | 11101011000 | 311123 |
| 55 | 37 | W | W | 55 | 87 | W | 11101000110 | 311321 |
| 56 | 38 | X | X | 56 | 88 | X | 11100010110 | 331121 |
| 57 | 39 | sì | sì | 57 | 89 | sì | 11101101000 | 312113 |
| 58 | 3a | Z | Z | 58 | 90 | Z | 11101100010 | 312311 |
| 59 | 3b | [ | [ | 59 | 91 | [ | 11100011010 | 332111 |
| 60 | 3c | \ | \ | 60 | 92 | \ | 11101111010 | 314111 |
| 61 | 3d | ] | ] | 61 | 93 | ] | 11001000010 | 221411 |
| 62 | 3e | ^ | ^ | 62 | 94 | ^ | 11110001010 | 431111 |
| 63 | 3f | _ | _ | 63 | 95 | _ | 10100110000 | 111224 |
| 64 | 40 | NUL | ` | 64 | 96 | ` | 10100001100 | 111422 |
| 65 | 41 | SOH | un | 65 | 97 | un | 10010110000 | 121124 |
| 66 | 42 | STX | B | 66 | 98 | B | 10010000110 | 121421 |
| 67 | 43 | ETX | C | 67 | 99 | C | 1000101100 | 141122 |
| 68 | 44 | EOT | D | 68 | 100 | D | 10000100110 | 141221 |
| 69 | 45 | ENQ | e | 69 | 101 | e | 10110010000 | 112214 |
| 70 | 46 | ACK | F | 70 | 102 | F | 10110000100 | 112412 |
| 71 | 47 | BEL | G | 71 | 103 | G | 10011010000 | 122114 |
| 72 | 48 | BS | h | 72 | 104 | h | 10011000010 | 122411 |
| 73 | 49 | HT | io | 73 | 105 | io | 10000110100 | 142112 |
| 74 | 4a | LF | J | 74 | 106 | J | 100000110010 | 142211 |
| 75 | 4b | VT | K | 75 | 107 | K | 11000010010 | 241211 |
| 76 | 4c | FF | io | 76 | 108 | io | 11001010000 | 221114 |
| 77 | 4d | CR | m | 77 | 109 | m | 11110111010 | 413111 |
| 78 | 4e | COSÌ | n | 78 | 110 | n | 11000010100 | 241112 |
| 79 | 4f | SI | o | 79 | 111 | o | 10001111010 | 134111 |
| 80 | 50 | DLE | P | 80 | 112 | P | 10100111100 | 111242 |
| 81 | 51 | DC1 | Q | 81 | 113 | Q | 10010111100 | 121142 |
| 82 | 52 | DC2 | R | 82 | 114 | R | 10010011110 | 121241 |
| 83 | 53 | DC3 | S | 83 | 115 | S | 10111100100 | 114212 |
| 84 | 54 | DC4 | T | 84 | 116 | T | 10011110100 | 124112 |
| 85 | 55 | NAK | tu | 85 | 117 | tu | 10011110010 | 124211 |
| 86 | 56 | SIN | v | 86 | 118 | v | 11110100100 | 411212 |
| 87 | 57 | ETB | w | 87 | 119 | w | 11110010100 | 421112 |
| 88 | 58 | POTERE | X | 88 | 120 | X | 1111010010 | 421211 |
| 89 | 59 | EM | sì | 89 | 121 | sì | 11011011110 | 212141 |
| 90 | 5a | SUB | z | 90 | 122 | z | 11011110110 | 214121 |
| 91 | 5b | ESC | { | 91 | 123 | { | 11110110110 | 412121 |
| 92 | 5c | FS | | | 92 | 124 | | | 10101111000 | 111143 |
| 93 | 5 D | GS | } | 93 | 125 | } | 10100011110 | 111341 |
| 94 | 5e | RS | ~ | 94 | 126 | ~ | 10001011110 | 131141 |
| 95 | 5f | noi | DEL | 95 | 195/200/240 | Ã / È / | 10111101000 | 114113 |
| 96 | 60 | FNC 3 | FNC 3 | 96 | 196/201 / 241 | / É / ñ | 10111100010 | 114311 |
| 97 | 61 | FNC 2 | FNC 2 | 97 | 197 / 202 / 242 | Å / Ê / ò | 11110101000 | 411113 |
| 98 | 62 | Maiusc B | Maiusc A | 98 | 198 / 203 / 243 | Æ / Ë / ó | 11110100010 | 411311 |
| 99 | 63 | Codice C | Codice C | 99 | 199 / 204 / 244 | Ç / Ì / ô | 10111011110 | 113141 |
| 100 | 64 | Codice B | FNC 4 | Codice B | 200 / 205 / 245 | È / Í / õ | 10111101110 | 114131 |
| 101 | 65 | FNC 4 | Codice A | Codice A | 201/206/246 | É / Î / ö | 11101011110 | 311141 |
| 102 | 66 | FNC 1 | FNC 1 | FNC 1 | 202 / 207 / 247 | / Ï / ÷ | 11110101110 | 411131 |
| 103 | 67 | Codice di inizio A | 203 / 208 / 248 | / Ð / ø | 11010000100 | 211412 | ||
| 104 | 68 | Codice di partenza B | 204 / 209 / 249 | Ì / Ñ / ù | 11010010000 | 211214 | ||
| 105 | 69 | Codice di inizio C | 205 / 210 / 250 | Í / Ò / ú | 11010011100 | 211232 | ||
| 106 | 6a | Fermare | — | — | 11000111010 | 233111 | ||
| — | — | Arresto inverso | — | — | 11010111000 | 211133 | ||
| — | — | Schema di arresto (7 battute/spazi) | 206 / 211 / 251 | Î / Ó / û | 1100011101011 | 2331112 | ||
I simboli "Codice A", "Codice B" e "Codice C" fanno sì che tutti i simboli successivi vengano interpretati secondo il corrispondente sottocodice (es. 128A, 128B o 128C). Il simbolo "Shift" cambia l'interpretazione di un singolo simbolo successivo tra i sottocodici A e B.
Il carattere ASCII codificato dipende dal carattere del codice a barre effettivamente utilizzato. In particolare il carattere ASCII di valore 0 e di valore 95 e superiori può essere definito diversamente nel font installato.
I codici FNC x vengono utilizzati per scopi speciali. FNC1 all'inizio di un codice a barre indica un codice a barre GS1-128 che inizia con un identificatore dell'applicazione a 2-3 o 4 cifre assegnato dall'Uniform Code Council , che spiega le cifre seguenti. Ad esempio, l'identificatore dell'applicazione 421 indica che segue un codice paese numerico ISO 3166-1 e un codice postale di destinazione. Pertanto, il codice postale degli Stati Uniti per la Casa Bianca verrebbe generalmente stampato come "(421) 840 20500", ma in realtà verrebbe codificato come " [Start C] [FNC1] 42 18 40 20 50 [Code A] 16 [Check symbol 92] [Stop]"
Verifica il calcolo della cifra per l'esempio di codice postale sopra:
| Valore | Il peso | Peso × valore | |
|---|---|---|---|
| Inizia C | 105 | 1 | 105 |
| FNC1 | 102 | 1 | 102 |
| 42 | 42 | 2 | 84 |
| 18 | 18 | 3 | 54 |
| 40 | 40 | 4 | 160 |
| 20 | 20 | 5 | 100 |
| 50 | 50 | 6 | 300 |
| Codice A | 101 | 7 | 707 |
| 0 | 16 | 8 | 128 |
| Somma = | 1740 | ||
| 1740 | Modulo 103 = | 92 |
Disponibilità
Per l'utente finale, i codici a barre Code 128 possono essere generati da un'applicazione esterna per creare un'immagine del codice a barre o da una soluzione di codici a barre basata su font. Entrambe le soluzioni richiedono l'uso di un'applicazione o di un'applicazione aggiuntiva per calcolare la cifra di controllo e creare il codice a barre.
Ottimizzazione della lunghezza del codice a barre
Il set di codici C utilizza un simbolo di codice per rappresentare due cifre, quindi quando il testo contiene solo cifre, generalmente si otterranno codici a barre più brevi. Tuttavia, quando la stringa contiene solo poche cifre o è mischiata con caratteri non numerici, non sempre produce un codice più compatto rispetto ai set di codici A o B. Utilizzando il set di codici C si salva un simbolo per due cifre, ma costa una modalità -simbolo shift per entrare e uscire dal set. Pertanto, vale la pena utilizzarlo solo se ci sono abbastanza cifre consecutive. Ad esempio, la codifica della stringa "X00Y" con il set di codici A o B richiede 7 simboli di codice ( [Start B] 56 16 16 57 [checksum] [Stop]), mentre l'utilizzo del set di codici C per "00" risulterebbe in un codice lungo 8 simboli ( [Start B] 56 [Code C] 00 [Code B] 57 [checksum] [Stop]).
L'uso del set di codici C è vantaggioso solo nelle seguenti condizioni:
| Posizione delle cifre | Numero di cifre consecutive |
|---|---|
| inizio dei dati | 4+ |
| fine dei dati | 4+ |
| al centro dei dati (circondato da simboli dal set di codici A o B) | 6+ |
| interi dati | 2 o 4+ (ma non 3) |
Alla fine di una stringa, ritardare il passaggio al set di codici C finché non rimane un numero pari di cifre rimanenti evita un simbolo in più. Considera la stringa "...01234": uno switch ritardato produce ... 0 [Code C] 12 34 [checksum] [Stop]ma uno switch anticipato produce ... [Code C] 01 23 [Code A] 4 [checksum] [Stop].
Ad esempio, data la stringa "098x1234567y23", il risparmio sulla lunghezza del codice a barre utilizzando il set di codici C si ottiene solo se applicato alla parte centrale della stringa. Per la parte iniziale e finale della stringa, il passaggio al set di codici C non è efficace. Poiché c'è un numero dispari di cifre nel mezzo della stringa, quella dispari deve essere usata con un codice diverso, impostato, ma non fa differenza se questo è il primo o l'ultimo; Sono richiesti 16 simboli in entrambi i casi: [Start B] 0 9 8 x 1 [Code C] 23 45 67 [Code B] y 2 3 [checksum] [Stop], o [Start B] 0 9 8 x [Code C] 12 34 56 [Code B] 7 y 2 3 [checksum] [Stop].
L'ottimizzazione della lunghezza del codice a barre risultante è importante quando si utilizzano lettori di codici a barre che devono rilevare l'intera immagine del codice a barre in una volta per poterla leggere, come i comuni scanner laser . Più lungo è il codice a barre, maggiore è la distanza del lettore di codici a barre laser dall'immagine del codice a barre, rendendo difficile o impossibile la lettura al di sopra di alcune lunghezze/distanze di soglia.
La codifica ottimale può essere trovata utilizzando un algoritmo di programmazione dinamica .
Riferimenti
link esterno
- Specifiche GS1-128 – Un elenco dettagliato di identificatori di applicazione.
- Barcodesoft – Mappatura dei caratteri di Barcodesoft, che differisce dalla comune mappatura ascii (vedi http://ascii-code.com/ ).
- Il codice 128 : impara l'algoritmo di codifica del codice 128 con una soluzione di codici a barre basata su font.
- Generatore di codici a barre online – Generatore di codici a barre online gratuito per i vari tipi di codici a barre.
Codice di esempio
- ZXing – Scanner/generatore di codici a barre open source multipiattaforma con versioni disponibili in Java (progetto principale) e porting su ActionScript, C++, C#, ObjectiveC e Ruby.
- Python Bar Code 128 – Questo codice sembra disegnare riquadri larghi un pixel. Sembra che sia stato modificato da un codice a barre a riga lunga a riga corta che avrebbe tracciato linee. Le "scatole nere" dovrebbero avere le stesse dimensioni delle "scatole bianche".
- GenCode128 – Implementazione gratuita del codice sorgente C# di Code128. Quasi tutte le funzionalità sono implementate, ma non sono complete al 100%.
- Barcode1DTools Ruby gem – Codice sorgente Ruby per molte simbologie di codici a barre 1D, incluso il Code 128.
- Codice per la generazione di codici a barre Perl: codice sorgente Perl per molte simbologie di codici a barre 1D, incluso il codice 128.
- Barcode::Code128 – Modulo gratuito per la generazione di codici a barre Perl.
- GOCR – OCR gratuito con riconoscimento Code 128.
- Barcode Code 128 – Implementazione gratuita del codice sorgente JavaScript di Code128.
- Barcode4J – API Java gratuita con implementazione di Code128 e altri codici a barre standard.
- JavaScript Code 128 – Implementazione JavaScript open source di Code128 e altri codici a barre lineari.
- Presentazione della creazione di codici a barre Code 128 Guida alla conversione del testo in codici a barre Code 128. Scritto per Lazarus (pascal GUI multipiattaforma open-source) ma di uso generale.