Kod 128
Kod 128 är en linjär streckkodssymbologi med hög densitet som definieras i ISO/IEC 15417:2007. Den används för alfanumeriska eller endast numeriska streckkoder . Den kan koda alla 128 tecken i ASCII och, genom att använda en förlängningssymbol (FNC4), de Latin-1-tecken som definieras i ISO/IEC 8859-1 . [ citat behövs ] . Det resulterar i allmänhet i mer kompakta streckkoder jämfört med andra metoder som kod 39 , speciellt när texterna mest innehåller siffror. Code 128 utvecklades av Computer Identics Corporation 1981.
GS1-128 (tidigare känd som UCC/EAN-128) är en delmängd av kod 128 och används flitigt över hela världen inom frakt- och förpackningsindustrin som en produktidentifikationskod för container- och pallnivåerna i leveranskedjan.
Specifikation
En kod 128 streckkod har sju sektioner:
- Tyst zon
- Startsymbol
- Kodad data
- Kontrollsymbol (obligatorisk)
- Stoppsymbol
- Sista stapeln (som ofta anses vara en del av stoppsymbolen)
- Tyst zon
Checksymbolen beräknas från en viktad summa ( modulo 103) av alla symbolerna.
Undertyper
Kod 128 innehåller 108 symboler: 103 datasymboler, 3 startsymboler och 2 stoppsymboler. Varje symbol består av tre svarta staplar och tre vita utrymmen med varierande bredd. Alla bredder är multiplar av en grundläggande "modul". Varje stapel och mellanslag är 1 till 4 moduler breda, och symbolerna har fast bredd: summan av bredden på de tre svarta staplarna och tre vita staplarna är 11 moduler.
Stoppmönstret består av två överlappande symboler och har fyra staplar. Stoppmönstret tillåter dubbelriktad avsökning. När stoppmönstret läses från vänster till höger (det vanliga fallet) känns stoppsymbolen (följt av en 2-modulsstapel) igen. När stoppmönstret läses från höger till vänster, känns den omvända stoppsymbolen (följt av en 2-modulstapel) igen. En skanner som ser den omvända stoppsymbolen vet då att den måste hoppa över 2-modulstapeln och läsa resten av streckkoden omvänt.
Trots sitt namn har kod 128 inte 128 distinkta symboler, så den kan inte representera 128 kodpunkter direkt. För att representera alla 128 ASCII-värden skiftar den mellan tre koduppsättningar (A, B, C). Tillsammans täcker koduppsättningarna A och B alla 128 ASCII-tecken. Koduppsättning C används för att effektivt koda siffersträngar. Den initiala delmängden väljs med hjälp av lämplig startsymbol. Inom varje koduppsättning är några av de 103 datakodpunkterna reserverade för att växla till en av de andra två koduppsättningarna. Skiften görs med hjälp av kodpunkterna 98 och 99 i koduppsättningarna A och B, 100 i koduppsättningarna A och C och 101 i koduppsättningarna B och C för att växla mellan dem):
- 128A (koduppsättning A) – ASCII-tecken 00 till 95 (0–9, A–Z och kontrollkoder), specialtecken och FNC 1–4
- 128B (koduppsättning B) – ASCII-tecken 32 till 127 (0–9, A–Z, a–z), specialtecken och FNC 1–4
- 128C (Koduppsättning C) – 00–99 (kodar två siffror med en enda kodpunkt) och FNC1
Den tysta zonens minsta bredd till vänster och höger om Code 128 är 10x, där x är den minsta bredden på en modul. Det är obligatoriskt på vänster och höger sida av streckkoden.
Start/stopp och kodad data
Varje symbol i streckkoden består av tre streck och tre mellanslag. Varje stapel eller mellanslag är 1, 2, 3 eller 4 enheter bred, summan av bredderna på staplarna måste vara jämn (4, 6 eller 8 enheter), summan av bredderna på mellanrummen måste vara udda (3, 5 eller 7 enheter), och totalt 11 enheter per symbol. Till exempel kan kodning av ASCII-tecknet "0" ses som 10011101100, där en sekvens av 1:or är en stapel och en sekvens av 0:or är ett mellanslag. En enda 1 skulle vara den tunnaste linjen i streckkoden. Tre 1:or i följd (111) indikerar en stapel tre gånger så tjock som en enda 1 bar.
Det finns 108 möjliga 11-enheter breda symboler, och koden använder alla möjliga symboler. Två av symbolerna används för stopp (streckkodsslut), stopp och backstopp. De två stoppsymbolerna är speciella eftersom de alltid följs av en 2-enhetsstapel, som bildar ett 13-enheter långt stoppmönster. Att läsa stoppmönstret från vänster till höger är stoppsymbolen (följt av en 2-enhetsstapel), och läsning av stoppmönstret från höger till vänster är den omvända stoppsymbolen (följt av en 2-enhetsstapel).
Kontrollera sifferberäkningen
Kontrollsiffran är en viktad modulo-103 kontrollsumma. Det beräknas genom att summera startkoden "värde" till produkterna av varje symbols "värde" multiplicerat med dess position i streckkodssträngen. Startsymbolen och den första kodade symbolen är i position 1. Summan av produkterna reduceras sedan modulo 103. Återstoden konverteras sedan tillbaka till en av de 103 icke-avgränsande symbolerna (enligt instruktionerna nedan) och läggs till streckkoden , omedelbart före stoppsymbolen.
Till exempel, i följande tabell, beräknas koden 128 variant A kontrollsummavärde för den alfanumeriska strängen PJJ123C:
Koda | Värde | Placera |
Värde × position |
---|---|---|---|
Startkod 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 |
Belopp | 878 | ||
Resten mod 103 | 54 |
För att beräkna kontrollsymbolen behandlas skift- och kodväxlingssymbolerna på samma sätt som alla andra symboler i streckkoden. Kontrollsumman beräknas över symbolvärdena, utan hänsyn till vilken koduppsättning som är aktiv vid tillfället. Till exempel anses koduppsättningens C-värde "33" och koduppsättningens B-värde "A" båda vara ett kod 128-värde på 33, och kontrollsiffran beräknas baserat på värdet av 33 gånger symbolens position i streckkoden .
Använder FNC4 för att koda höga (160–255) tecken
Specialsymbolen FNC4 ("Funktion 4"), som endast finns i koduppsättningarna A och B, kan användas för att koda alla Latin-1 ( ISO-8859-1 ) tecken i en Code 128 streckkod. Funktionen stöds inte brett och används inte i GS1-128. När en enstaka FNC4 finns i en sträng konverteras följande symbol till ASCII som vanligt och sedan läggs 128 till ASCII-värdet. (Om följande symbol är en förskjutning, kommer en andra symbol att användas för att erhålla tecknet.) Om två FNC4:or används i följd kommer alla följande tecken att behandlas som sådana, upp till slutet av strängen eller ett annat par FNC4:or . Mellan de dubbla FNC4:erna kommer en enkel FNC4 att användas för att ange att följande tecken kommer att vara standard ASCII .
Streckkodsbredder
Code128 specificerar en kombination av 6 alternerande staplar och mellanslag (3 av varje) för varje symbol. Således börjar varje symbol med en stapel och slutar med ett mellanslag. I streckkodsteckensnitt kombineras det sista strecket vanligtvis med stoppsymbolen för att skapa ett bredare stoppmönster. Följande tabell beskriver bredderna för varje stapel och utrymmet för varje symbol. Bredden på varje stapel eller mellanslag kan vara 1, 2, 3 eller 4 enheter (moduler). Med exemplet ovan skulle ett 'A' avbildas med mönstret 10100011000, eller som bredder 111323 i tabellerna nedan.
Breddvärdet härleds genom att räkna längden av varje körning av 1:or sedan 0:or i mönstret, med början från vänster. Det kommer alltid att finnas 6 körningar och längderna på dessa 6 körningar bildar värdet Widths. Till exempel, med mönstret 10100011000, är körlängderna 1 (siffra 1), 1 (siffran 0), 1 (siffran 1), 3 (siffran 0), 2 (siffran 1), 3 (siffran 0). Att bara rapportera längderna för varje körning ger 1, 1, 1, 3, 2, 3, vilket ger ett breddvärde på 111323.
Värde | Hexvärde | 128A | 128B | 128C |
Teckensnittsposition (Vanligt/Ovanligt/Barcodesoft) |
Bar/utrymme | ||
---|---|---|---|---|---|---|---|---|
Koda | Latin-1 | Mönster | Bredder | |||||
0 | 00 | Plats | Plats | 00 | 32 eller 194 eller 207 / 212 / 252 | ␣ eller  eller Ï / Ô / ü | 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 | Ib | ; | ; | 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 | A | A | 33 | 65 | A | 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 | 10001100010 | 132311 |
39 | 27 | G | G | 39 | 71 | G | 11010001000 | 211313 |
40 | 28 | H | H | 40 | 72 | H | 11000101000 | 231113 |
41 | 29 | jag | jag | 41 | 73 | jag | 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 | O | O | 47 | 79 | O | 10001110110 | 133121 |
48 | 30 | P | P | 48 | 80 | P | 11101110110 | 313121 |
49 | 31 | F | F | 49 | 81 | F | 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 | U | U | 53 | 85 | U | 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 | Y | Y | 57 | 89 | Y | 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 | a | 65 | 97 | a | 10010110000 | 121124 |
66 | 42 | STX | b | 66 | 98 | b | 10010000110 | 121421 |
67 | 43 | ETX | c | 67 | 99 | c | 10000101100 | 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 | i | 73 | 105 | i | 10000110100 | 142112 |
74 | 4a | LF | j | 74 | 106 | j | 10000110010 | 142211 |
75 | 4b | VT | k | 75 | 107 | k | 11000010010 | 241211 |
76 | 4c | FF | l | 76 | 108 | l | 11001010000 | 221114 |
77 | 4d | CR | m | 77 | 109 | m | 11110111010 | 413111 |
78 | 4e | SÅ | n | 78 | 110 | n | 11000010100 | 241112 |
79 | 4f | SI | o | 79 | 111 | o | 10001111010 | 134111 |
80 | 50 | DLE | sid | 80 | 112 | sid | 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 | u | 85 | 117 | u | 10011110010 | 124211 |
86 | 56 | SYN | v | 86 | 118 | v | 11110100100 | 411212 |
87 | 57 | ETB | w | 87 | 119 | w | 11110010100 | 421112 |
88 | 58 | BURK | x | 88 | 120 | x | 11110010010 | 421211 |
89 | 59 | EM | y | 89 | 121 | y | 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 | 5d | GS | } | 93 | 125 | } | 10100011110 | 111341 |
94 | 5e | RS | ~ | 94 | 126 | ~ | 10001011110 | 131141 |
95 | 5f | USA | 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 | Skift B | Skift A | 98 | 198/203/243 | Æ / Ë / ó | 11110100010 | 411311 |
99 | 63 | Kod C | Kod C | 99 | 199/204/244 | Ç / Ì / ô | 10111011110 | 113141 |
100 | 64 | Kod B | FNC 4 | Kod B | 200/205/245 | È / Í / õ | 10111101110 | 114131 |
101 | 65 | FNC 4 | Kod A | Kod A | 201/206/246 | É / Î / ö | 11101011110 | 311141 |
102 | 66 | FNC 1 | FNC 1 | FNC 1 | 202/207/247 | Ê / Ï / ÷ | 11110101110 | 411131 |
103 | 67 | Startkod A | 203/208/248 | Ë / Ð / ø | 11010000100 | 211412 | ||
104 | 68 | Startkod B | 204/209/249 | Ì / Ñ / ù | 11010010000 | 211214 | ||
105 | 69 | Startkod C | 205/210/250 | Í / Ò / ú | 11010011100 | 211232 | ||
106 | 6a | Sluta | — | — | 11000111010 | 233111 | ||
— | — | Omvänd stopp | — | — | 11010111000 | 211133 | ||
— | — | Stoppmönster (7 staplar/mellanslag) | 206/211/251 | Î / Ó / û | 1100011101011 | 2331112 |
Symbolerna "Kod A", "Kod B" och "Kod C" gör att alla följande symboler tolkas enligt motsvarande underkod (dvs 128A, 128B eller 128C). "Shift"-symbolen växlar en enda följande symbols tolkning mellan underkoder A och B.
Det kodade ASCII-tecken beror på det faktiska använda streckkodsteckensnittet. Speciellt ASCII-tecknet med värde 0 och värde 95 och högre kan definieras annorlunda i det teckensnitt som är installerat.
FNC x -koderna används för speciella ändamål. FNC1 i början av en streckkod indikerar en GS1-128 streckkod som börjar med en 2- 3- eller 4-siffrig applikationsidentifierare tilldelad av Uniform Code Council , som förklarar följande siffror. Till exempel indikerar applikationsidentifierare 421 att en ISO 3166-1 numerisk landskod och postnummer för leverans följer. Således skulle det amerikanska postnumret för Vita huset i allmänhet skrivas ut som "(421) 840 20500", men skulle faktiskt kodas som " [ Start C] [FNC1] 42 18 40 20 50 [Kod A] 16 [Kontrollsymbol 92] [Stopp]
"
Kontrollera sifferberäkningen för postnummerexemplet ovan:
Värde | Vikt | Vikt × värde | |
---|---|---|---|
Starta 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 |
Kod A | 101 | 7 | 707 |
0 | 16 | 8 | 128 |
Summa = | 1740 | ||
1740 | Mod 103 = | 92 |
Tillgänglighet
För slutanvändaren kan kod 128-streckkoder genereras av antingen en extern applikation för att skapa en bild av streckkoden, eller av en teckensnittsbaserad streckkodslösning. Endera lösningen kräver att du använder en applikation eller en applikation som lägger till för att beräkna kontrollsiffran och skapa streckkoden.
Streckkodslängdoptimering
Koduppsättning C använder en kodsymbol för att representera två siffror, så när texten bara innehåller siffror kommer det i allmänhet att resultera i kortare streckkoder. Men när strängen bara innehåller ett fåtal siffror eller den är blandad med icke-siffriga tecken, ger den inte alltid en mer kompakt kod än koduppsättningarna A eller B. Genom att använda koduppsättningen C sparas en symbol per två siffror, men kostar ett läge -Skift-symbol för att gå in i och lämna setet. Således är det bara värt att använda om det finns tillräckligt med på varandra följande siffror. Till exempel, kodning av strängen "X00Y" med koduppsättning A eller B kräver 7 kodsymboler ( [Start B] 56 16 16 57 [kontrollsumma] [Stopp] ),
medan användning av koduppsättning C för "X00Y" skulle resultera i en kod 8 symboler långa ( [Start B] 56 [Kod C] 00 [Kod B] 57 [kontrollsumma] [Stopp] )
.
Att använda koduppsättning C är endast fördelaktigt under följande förhållanden:
Placering av siffror | Antal på varandra följande siffror |
---|---|
början av data | 4+ |
slut på data | 4+ |
mitten av data (omgiven av symboler från koduppsättning A eller B) | 6+ |
hela data | antingen 2 eller 4+ (men inte 3) |
I slutet av en sträng undviker man en extra symbol genom att fördröja övergången till koduppsättning C tills det finns ett jämnt antal siffror kvar. Betrakta strängen "...01234": en fördröjd switch producerar ... 0 [Kod C] 12 34 [kontrollsumma] [Stopp]
men en tidig switch producerar ... [Kod C] 01 23 [Kod A] 4 [ kontrollsumma] [Stopp]
.
Till exempel, med tanke på strängen "098x1234567y23", uppnås besparingar på streckkodslängden med koduppsättning C endast om den appliceras på den mittersta delen av strängen. För början och slutdelen av strängen är byte till koduppsättning C inte effektiv. Eftersom det finns ett udda antal siffror i mitten av strängen, måste den udda använda en annan kod, set, men det spelar ingen roll om detta är den första eller sista; 16 symboler krävs i båda fallen: [Start B] 0 9 8 x 1 [Kod C] 23 45 67 [Kod B] y 2 3 [kontrollsumma] [Stopp] ,
eller [Start B] 0 9 8 x [Kod C ] 12 34 56 [Kod B] 7 y 2 3 [kontrollsumma] [Stopp]
.
Att optimera längden på den resulterande streckkoden är viktigt när streckkodsläsare används som måste upptäcka hela streckkodsbilden på en gång för att kunna läsa den, till exempel vanliga laserskanner . Ju längre streckkoden är, desto större avstånd behövs mellan streckkodsläsaren och streckkodsbilden, vilket gör läsningen svår eller omöjlig över vissa tröskellängder/avstånd.
Den optimala kodningen kan hittas med hjälp av en dynamisk programmeringsalgoritm .
externa länkar
- Online Code128 streckkodsgenerator
- GS1-128-specifikation – En detaljerad lista över applikationsidentifierare.
- Barcodesoft – Fontmapping av Barcodesoft, som skiljer sig från den vanliga ascii-mappen (se http://ascii-code.com/ ).
- 128-koden – Lär dig kodningsalgoritmen Code 128 med en teckensnittsbaserad streckkodslösning.
- Online streckkodsgenerator – Gratis streckkodsgenerator online för de olika streckkodstyperna.
Exempelkod
- ZXing – Flerplattforms streckkodsläsare/generator med öppen källkod med versioner tillgängliga i Java (kärnprojekt) och portar till ActionScript, C++, C#, ObjectiveC och Ruby.
- Python streckkod 128 – Den här koden verkar rita rutor med en pixel bredd. Det verkar som om det modifierades från en kort rad lång rad streckkod som skulle ha ritat linjer. De "svarta lådorna" ska ha samma storlek som de "vita lådorna".
- GenCode128 – Gratis C#-källkodsimplementering av Code128. Nästan alla funktioner är implementerade, men är inte 100% kompletta.
- Barcode1DTools Ruby gem – Ruby källkod för många 1D streckkodssymboler inklusive kod 128.
- Perl streckkodsgenereringskod – Perl källkod för många 1D streckkodssymboler inklusive kod 128.
- Streckkod::Code128 – Gratis Perl streckkodsgenereringsmodul.
- GOCR – Gratis OCR med kod 128-igenkänning.
- Streckkodskod 128 – Gratis JavaScript-källkodsimplementering av Code128.
- Barcode4J – Gratis Java API med implementering av Code128 och andra standard streckkoder.
- JavaScript-kod 128 – JavaScript-implementering med öppen källkod av Code128 och andra linjära streckkoder.
- Introduktion av skapandet av Code 128 streckkoder Guide för att konvertera text till Code 128 streckkoder. Skrivet för Lazarus (öppen källkod, multi-plattform GUI Pascal) men av allmänt bruk.