Struktura

Istnieje 106 różnych kombinacji ustawień pasków i odstępów. Każdej takiej kombinacji można przypisać jedno z trzech znaczeń. Znaczenie to określa się poprzez jeden z trzech różnych znaków startowych. Znak startowy Code A pozwala na kodowanie wszystkich standardowych alfanumerycznych znaków plus znaki sterujące i specjalne. Znak startowy Code B włącza wszystkie standardowe znaki alfanumeryczne plus małe litery oraz specjalne znaki. Znak startowy Code C obejmuje 100 par cyfr od 00 do 99 i może być używany do podwojenia gęstości kodowania danych numerycznych.

Wewnątrz kodu można zmienić zestaw kodowanych znaków na inny (A, B, C) stosując specjalne znaki CODE i SHIFT. Znak CODE zmienia zestaw znaków dla wszystkich kolejnych znaków w kodzie. Znak SHIFT zmienia zestaw znaków tylko dla następnego znaku spośród zestawów Code A i Code B.

Kody FNC określają instrukcje dla czytnika kodów kreskowych. FNC 1 jest zarezerwowane dla przyszłego użycia. FNC 2 informuje czytnik, aby zgromadził dane i przesłał je z następnym kodem. FNC 3 jest zarezerwowany do inicjalizacji czytnika i innych funkcji czytnika. FNC 4 jest zarezerwowany dla przyszłych zastosowań.

Każdy znak ma wartość od 0 do 105. Ta wartość jest używana do obliczania sumy kontrolnej kodu.

Suma kontrolna

Poniżej przedstawiony jest sposób obliczania sumy kontrolnej. Kodujemy nazwę kodu czyli "Code 128".
  1. Każdemu znakowi przypisz wagę równą numerowi pozycji znaku w kodzie.

    Znak

    C

    o

    d

    e

        

    1

    2

    8

    Waga

    1

    2

    3

    4

    5

    6

    7

    8

    Wartość

    35

    79

    68

    69

    0

    17

    18

    24

  2. Dla wszystkich znaków dokonaj obliczenia sumy ważonej wartości znaków. Dodaj wartość symbolu startowego.

    1*35 + 2*79 + 3*68 + 4*69 + 5*0 + 6*17 + 7*18 + 8*24 + 104 = 1197
  3. Oblicz resztę z dzielenia wartości otrzymanej w p.2 przez 101.

    1197 mod 101 = 86
  4. Sumą kontrolną jest znak, którego wartość jest równa wynikowi z p.3.

    ZNAK (86) = v

    Kod wraz z sumą kontrolną ma więc postać: "(Start B) Code 128 v (Stop)"

Tabela

Poniższa tabela przedstawia sposób kodowania znaków. Pierwsza kolumna zawiera wartości znaków. W następnych trzech zawarte są zestawy znaków: A, B, C. Kolejne cyfry w odpowiedniej komórce ostatniej kolumny oznaczają z ilu modułów składają się kolejne elementy (pasek - odstęp - pasek - odstęp - pasek - odstęp - pasek - odstęp).



Wartość Zestaw
Code A
Zestaw
Code B
Zestaw
Code C
Szerokość pasek/odstęp
P O P O P O
0 SPACE SPACE 00 2 1 2 2 2 2
1 ! ! 01 2 2 2 1 2 2
2 " " 02 2 2 2 2 2 1
3 # # 03 1 2 1 2 2 3
4 $ $ 04 1 2 1 3 2 2
5 % % 05 1 3 1 2 2 2
6 & & 06 1 2 2 2 1 3
7 ' ' 07 1 2 2 3 1 2
8 ( ( 08 1 3 2 2 1 2
9 ) ) 09 2 2 1 2 1 3
10 * * 10 2 2 1 3 1 2
11 + + 11 2 3 1 2 1 2
12 , , 12 1 1 2 2 3 2
13 - - 13 1 2 2 1 3 2
14 . . 14 1 2 2 2 3 1
15 / / 15 1 1 3 2 2 2
16 0 0 16 1 2 3 1 2 2
17 1 1 17 1 2 3 2 2 1
18 2 2 18 2 2 3 2 1 1
19 3 3 19 2 2 1 1 3 2
20 4 4 20 1 1 3 1 2 3
21 5 5 21 2 1 3 2 1 2
22 6 6 22 2 2 3 1 1 2
23 7 7 23 3 1 2 1 3 1
24 8 8 24 3 1 1 2 2 2
25 9 9 25 3 2 1 1 2 2
26 : : 26 3 2 1 2 2 1
27 ; ; 27 3 1 2 2 1 2
28 < < 28 3 2 2 1 1 2
29 = = 29 1 2 4 2 1 1
30 > > 30 2 1 2 1 2 3
31 ? ? 31 2 1 2 3 2 1
32 @ @ 32 2 3 2 1 2 1
33 A A 33 1 1 1 3 2 3
34 B B 34 1 3 1 1 2 3
35 C C 35 1 3 1 3 2 1
36 D D 36 1 1 2 3 1 3
37 E E 37 1 3 2 1 1 3
38 F F 38 1 3 2 3 1 1
39 G G 39 2 1 1 3 1 3
40 H H 40 2 3 1 1 1 3
41 I I 41 2 3 1 3 1 1
42 J J 42 1 1 2 1 3 3
43 K K 43 1 1 2 3 3 1
44 L L 44 1 3 2 1 3 1
45 M M 45 2 2 1 2 3 1
46 N N 46 1 1 3 3 2 1
47 O O 47 1 3 3 1 2 1
48 P P 48 3 1 3 1 2 1
49 Q Q 49 2 1 1 3 3 1
50 R R 50 2 3 1 1 3 1
51 S S 51 2 1 3 1 1 3
52 T T 52 2 1 3 3 1 1
53 U U 53 2 1 3 1 3 1
54 V V 54 3 1 1 1 2 3
55 W W 55 3 1 1 3 2 1
56 X X 56 3 3 1 1 2 1
57 Y Y 57 3 1 2 1 1 3
58 Z Z 58 3 1 2 3 1 1
59 [ [ 59 3 3 2 1 1 1
60 \ \ 60 3 1 4 1 1 1
61 ] ] 61 2 2 1 4 1 1
62 ^ ^ 62 4 3 1 1 1 1
63 _ _ 63 1 1 1 2 2 4
64 NUL ` 64 1 1 1 4 2 2
65 SOH a 65 1 2 1 1 2 4
66 STX b 66 1 2 1 4 2 1
67 ETX c 67 1 4 1 1 2 2
68 EOT d 68 1 4 1 2 2 1
69 ENQ e 69 1 1 2 2 1 4
70 ACK f 70 1 1 2 4 1 2
71 BEL g 71 1 2 2 1 1 4
72 BS h 72 1 2 2 4 1 1
73 HT i 73 1 4 2 1 1 2
74 LF j 74 1 4 2 2 1 1
75 VT k 75 2 4 1 2 1 1
76 FF I 76 2 2 1 1 1 4
77 CR m 77 4 1 3 1 1 1
78 SO n 78 2 4 1 1 1 2
79 SI o 79 1 3 4 1 1 1
80 DLE p 80 1 1 1 2 4 2
81 DC1 q 81 1 2 1 1 4 2
82 DC2 r 82 1 2 1 2 4 1
83 DC3 s 83 1 1 4 2 1 2
84 DC4 t 84 1 2 4 1 1 2
85 NAK u 85 3 2 2 2 1 1
86 SYN v 86 4 1 1 2 1 2
87 ETB w 87 4 2 1 1 1 2
88 CAN x 88 4 2 1 2 1 1
89 EM y 89 2 1 2 1 4 1
90 SUB z 90 2 1 4 1 2 1
91 ESC { 91 4 1 2 1 2 1
92 FS | 92 1 1 1 1 4 3
93 GS } 93 1 1 1 3 4 1
94 RS ~ 94 3 1 1 1 4 1
95 US DEL 95 1 1 4 1 1 3
96 FNC 3 FNC 3 96 1 1 4 3 1 1
97 FNC 2 FNC 2 97 4 1 1 1 1 3
98 SHIFT SHIFT 98 4 1 1 3 1 1
99 CODE C CODE C 99 1 1 3 1 4 1
100 CODE B FNC 4 CODE B 1 1 4 1 3 1
101 FNC 4 CODE A CODE A 1 3 1 1 4 1
102 FNC 1 4 1 1 1 3 1
103 Start A 2 1 1 4 1 2
104 Start B 2 1 1 2 1 4
105 Start C 2 1 1 2 3 2
106 Stop 2 3 3 1 1 1 2

Wymiary

Szerokość modułu waha się najczęściej w granicach od X=0,19 mm do 1,27 mm.
Najmniejsza wysokość pasków musi być co najmniej równa 0,15xdługość symbolu albo 0,25 cala (6,35 mm) - wybieramy większą z tych dwóch liczb.

Całkowita długość symbolu wyraża się wzorem:
L=(11C+35)X,
gdzie:
L - długość symbolu (bez uwzględnienia cichych stref),
C - liczba znaków danych i sterujących (bez uwzględniania startu, stopu i sumy kontrolnej),
X - wymiar modułu.
Dla Code 128C (kodowanie tylko cyfr) powyższy wzór przyjmuje postać:
L=(5,5C+35)X.

Zastosowanie

Kod ten ma szerokie zastosowanie. Jest używany między innymi w magazynach, logistyce (opakowania transportowe), sprzedaży detalicznej (daty produkcji, okresy trwałości).
Code 128 używa mniej miejsca do zakodowania sześciu cyfr, niż jakikolwiek inny kod linearny.