|
Symbol kodu kreskowego Code 128 jest zbudowany z:
- cichej strefy (przynajmniej 10 razy szerszej niż wąski pasek),
- znaku start,
- zmiennego odcinka danych,
- sumy kontrolnej,
- znaku stop,
- cichej strefy (przynajmniej 10 razy szerszej niż wąski pasek).
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.
|
Poniżej przedstawiony jest sposób obliczania sumy kontrolnej. Kodujemy nazwę kodu czyli "Code 128".
-
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 |
-
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
-
Oblicz resztę z dzielenia wartości otrzymanej w p.2 przez 101.
1197 mod 101 = 86
-
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)"
|
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 |
|
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.
|
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.
|
|
|