Kod 128 (code128) – alfanumeryczny jednowymiarowy kod kreskowy wysokiej rozdzielczości. Został stworzony do zakodowania 128 znaków ASCII, do kodowania używa się kreski i przerwy o czterech możliwych szerokościach, co czyni go zwartym kodem.
Kod 128 może być skanowany w każdym kierunku i nie ma ograniczeń co do długości samego kodu.
Każdy znak Kodu 128 składa się z 11 czarnych i białych modułów (wykorzystuje zatem 11 bitów), wyjątkiem jest znak Stop, który składa się z 13 modułów. 11 modułów musi tworzyć następujący schemat – Pasek Przerwa Pasek Przerwa Pasek Przerwa o długości od 1 do 4 modułów każdy (11 bitów daje 2048 możliwości, z czego 216 jest możliwych do wykorzystania – Code 128 wykorzystuje tylko 107)
Przykład: znak a = 10010110000 > (1)x1 (2)x0 (1)x1 (1)x0 (2)x1 (4)x0 > 1 2 1 1 2 4
Nie licząc znaku STOP, mamy do dyspozycji 106 kombinacji czarnych i białych modułów. Każda z tych kombinacji może być wykorzystana do określenia znaku w jednym z trzech zestawów znaków (Code Set A, B i C). Wybór konkretnego zestawu dokonujemy poprzez użycie odpowiedniego znaku startowego (START A – 103, START B – 104, START C – 105). Mamy również do dyspozycji specjalne znaki CODE i SHIFT. Pozwalają one na zmianę zestawu znaków w trakcie skanowania (CODE zmienia zestaw od danego momentu, SHIFT tylko dla następnego znaku). W zestawie znaków znajdują się także znaki funkcyjne (FNC) – FNC1 określa np. standard GS1-128.
Każdy znak ma wartość od 0 do 105, wartość ta jest wykorzystywana do obliczenia znaku kontrolnego.
Obliczanie znaku kontrolnego
Znak kontrolny jest resztą z dzielenia sumy znaku start i iloczynów wartości znaków i ich pozycji przez 103 (liczbę znaków możliwych do wykorzystania jako znak kontrolny). Dla tekstu Code 128 wygląda to następująco:
Wartość Suma
===== =====
Start Code B 104 104
Pozycja 1 C 35 1 x 35 = 35
Pozycja 2 o 79 2 x 79 = 158
Pozycja 3 d 68 3 x 68 = 204
Pozycja 4 e 69 4 x 69 = 276
Pozycja 5 0 5 x 0 = 0
Pozycja 6 1 17 6 x 17 = 102
Pozycja 7 2 18 7 x 18 = 126
Pozycja 8 8 24 8 x 24 = 192
=====
1197
=====
1197 mod 103 = 64
Znakiem kontrolnym jest znak z wartością 64 – jest to w tym przypadku `