Definition
Code 128
Der Code 128 untergliedert sich in drei
Untercodes:
|
Charset A: Unterstützt ASCII 32 mit 63 (also
Satzzeichen, nur Großbuchstaben und Ziffern und etwas mehr) und ASCII 0-31
in einem eigenen Bereich |
|
Charset B: unterstützt ASCII 32 mit 127 (also
Satzzeichen, Groß- und Kleinbuchstaben, Ziffern und etwas mehr) |
|
Charset C: unterstützt nur Ziffern, wobei zwei
Ziffern in einem Barcode-Element abgebildet werden. Die Zahlenfolge muß
daher längenmäßig geradzahlig sein |
Zu allen drei Charsets gibt es noch ein paar wenige
Auswahlcodes (damit läßt sich innerhalb eines Barcodes zu einem anderen
Charset wechseln und zurück).
Code128 verwendet die Modulo 103 Prüfmethodik. Definiert
in ISO 15417.
Da Code 128 B und C am häufigsten verwendet werden, wurden in
HIT nur diese beiden implementiert.
Aufbau
Jeder Barcode beginnt mit dem Startcode und endet mit einem
Checkcode und dem
Stopcode: <Start><Zeichen>[<Zeichen>
...]<Checkcode><Stop>
Die Zeichenfolge muß
in Charset C eine geradzahlige Länge haben, d.h. es wird entweder vorne- oder
hintendran eine 0 angehängt (je nach Anwendungsfall).
Checkcode
Der Checkcode entspricht einer Prüfziffer. Damit wird
sichergestellt, daß das Barcode-Lesegerät den gelesenen Code auch richtig
gelesen hat. Dieser Code ist nicht Teil des dargestellten Wertes und muß
ignoriert werden (dient nur der Prüfung während des Lesevorganges)! Der Wert
des Checkcodes darf somit auch nicht als lesbares Zeichen unterhalb des Barcodes
auftauchen. Das "Modulo 103"-Verfahren für den
Checkcode berechnet
sich wie folgt:
-
Den Startcode (für z.B. Code 128 B Start B
)
und alle
Datenzeichen in numerische Werte umsetzen (linke Spalte der Zeichensatztabelle)
-
Jedem Datenzeichen (nicht dem Startcode) eine Gewichtung
zuordnen. Diese beginnt beim ersten Zeichen bei 1 und erhöht sich bei jedem
weiteren Zeichen um 1.
-
Multipliziere die Datenzeichen mit deren Gewichtungen
-
Addiere alles zusammen (Startzeichen-Wert plus Ergebnisse
der Multiplikationen), dividiere durch 103 und ermittle den Rest.
-
Anhand der Zeichensatztabelle das
zum Rest gehörige Strichmuster für die Darstellung des Barcodes ermitteln.
Beispiele
Beispiel LOM 040000769458734 (=AT 76 9458
734) im Charset B:
Das letzte Zeichen 3 (vom Beispiel) darf nicht als Wert unterhalb
des Barcodes ausgegeben werden.
Beispiel Betriebsnummer 276153550330002 im Charset C:
b = schwarzer Balken, w = weißer
Balken
Wert |
Code B |
Code C |
Strichmuster |
0 |
Leerz. |
00 |
bb w bb ww bb ww |
1 |
! |
01 |
bb ww bb w bb ww |
2 |
" |
02 |
bb ww bb ww bb w |
3 |
# |
03 |
b ww b ww bb www |
4 |
$ |
04 |
b ww b www bb ww |
5 |
% |
05 |
b www b ww bb ww |
6 |
& |
06 |
b ww bb ww b www |
7 |
' |
07 |
b ww bb www b ww |
8 |
( |
08 |
b www bb ww b ww |
9 |
) |
09 |
bb ww b ww b www |
10 |
* |
10 |
bb ww b www b ww |
11 |
+ |
11 |
bb www b ww b ww |
12 |
, |
12 |
b w bb ww bbb ww |
13 |
- |
13 |
b ww bb w bbb ww |
14 |
. |
14 |
b ww bb ww bbb w |
15 |
/ |
15 |
b w bbb ww bb ww |
16 |
0 |
16 |
b ww bbb w bb ww |
17 |
1 |
17 |
b ww bbb ww bb w |
18 |
2 |
18 |
bb ww bbb ww b w |
19 |
3 |
19 |
bb ww b w bbb ww |
20 |
4 |
20 |
bb ww b ww bbb w |
21 |
5 |
21 |
bb w bbb ww b ww |
22 |
6 |
22 |
bb ww bbb w b ww |
23 |
7 |
23 |
bbb w bb w bbb w |
24 |
8 |
24 |
bbb w b ww bb ww |
25 |
9 |
25 |
bbb ww b w bb ww |
26 |
: |
26 |
bbb ww b ww bb w |
27 |
; |
27 |
bbb w bb ww b ww |
28 |
< |
28 |
bbb ww bb w b ww |
29 |
= |
29 |
bbb ww bb ww b w |
30 |
> |
30 |
bb w bb w bb www |
31 |
? |
31 |
bb w bb www bb w |
32 |
@ |
32 |
bb www bb w bb w |
33 |
A |
33 |
b w b www bb www |
34 |
B |
34 |
b www b w bb www |
35 |
C |
35 |
b www b www bb w |
36 |
D |
36 |
b w bb www b www |
37 |
E |
37 |
b www bb w b www |
38 |
F |
38 |
b www bb www b w |
39 |
G |
39 |
bb w b www b www |
40 |
H |
40 |
bb www b w b www |
41 |
I |
41 |
bb www b www b w |
42 |
J |
42 |
b w bb w bbb www |
43 |
K |
43 |
b w bb www bbb w |
44 |
L |
44 |
b www bb w bbb w |
45 |
M |
45 |
b w bbb w bb www |
46 |
N |
46 |
b w bbb www bb w |
47 |
O |
47 |
b www bbb w bb w |
48 |
P |
48 |
bbb w bbb w bb w |
49 |
Q |
49 |
bb w b www bbb w |
50 |
R |
50 |
bb www b w bbb w |
51 |
S |
51 |
bb w bbb w b www |
52 |
T |
52 |
bb w bbb www b w |
53 |
U |
53 |
bb w bbb w bbb w |
54 |
V |
54 |
bbb w b w bb www |
55 |
W |
55 |
bbb w b www bb w |
56 |
X |
56 |
bbb www b w bb w |
57 |
Y |
57 |
bbb w bb w b www |
58 |
Z |
58 |
bbb w bb www b w |
59 |
[ |
59 |
bbb www bb w b w |
60 |
\ |
60 |
bbb w bbbb w b w |
61 |
] |
61 |
bb ww b wwww b w |
62 |
^ |
62 |
bbbb www b w b w |
63 |
_ |
63 |
b w b ww bb wwww |
64 |
` |
64 |
b w b wwww bb ww |
65 |
a |
65 |
b ww b w bb wwww |
66 |
b |
66 |
b ww b wwww bb w |
67 |
c |
67 |
b wwww b w bb ww |
68 |
d |
68 |
b wwww b ww bb w |
69 |
e |
69 |
b w bb ww b wwww |
70 |
f |
70 |
b w bb wwww b ww |
71 |
g |
71 |
b ww bb w b wwww |
72 |
h |
72 |
b ww bb wwww b w |
73 |
i |
73 |
b wwww bb w b ww |
74 |
j |
74 |
b wwww bb ww b w |
75 |
k |
75 |
bb wwww b ww b w |
76 |
l |
76 |
bb ww b w b wwww |
77 |
m |
77 |
bbbb w bbb w b w |
78 |
n |
78 |
bb wwww b w b ww |
79 |
o |
79 |
b www bbbb w b w |
80 |
p |
80 |
b w b ww bbbb ww |
81 |
q |
81 |
b ww b w bbbb ww |
82 |
r |
82 |
b ww b ww bbbb w |
83 |
s |
83 |
b w bbbb ww b ww |
84 |
t |
84 |
b ww bbbb w b ww |
85 |
u |
85 |
b ww bbbb ww b w |
86 |
v |
86 |
bbbb w b ww b ww |
87 |
w |
87 |
bbbb ww b w b ww |
88 |
x |
88 |
bbbb ww b ww b w |
89 |
y |
89 |
bb w bb w bbbb w |
90 |
z |
90 |
bb w bbbb w bb w |
91 |
{ |
91 |
bbbb w bb w bb w |
92 |
| |
92 |
b w b w bbbb www |
93 |
} |
93 |
b w b www bbbb w |
94 |
~ |
94 |
b www b w bbbb w |
95 |
del |
95 |
b w bbbb w b www |
96 |
func3 |
96 |
b w bbbb www b w |
97 |
func2 |
97 |
bbbb w b w b www |
98 |
Shift |
98 |
bbbb w b www b w |
99 |
Code C |
99 |
b w bbb w bbbb w |
100 |
func4 |
Code B |
b w bbbb w bbb w |
101 |
Code A |
Code A |
bbb w b w bbbb w |
102 |
func1 |
func1 |
bbbb w b w bbb w |
103 |
Start A |
Start A |
bb w b wwww b ww |
104 |
Start B |
Start B |
bb w b ww b wwww |
105 |
Start C |
Start C |
bb w b ww bbb ww |
106 |
Stop |
Stop |
bb www bbb w b w bb |
|