Zur Homepage www.HI-Tier.de Barcode "Code 128"
Zurück Home Nach oben
Öffentlicher Bereich für Entwickler

 

Definition Code 128

Der Code 128 untergliedert sich in drei Untercodes:

bullet

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

bullet

Charset B: unterstützt ASCII 32 mit 127 (also Satzzeichen, Groß- und Kleinbuchstaben, Ziffern und etwas mehr)

bullet

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:

  1. Den Startcode (für z.B. Code 128 B Start B ) und alle Datenzeichen in numerische Werte umsetzen (linke Spalte der Zeichensatztabelle)

  2. 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.

  3. Multipliziere die Datenzeichen mit deren Gewichtungen

  4. Addiere alles zusammen (Startzeichen-Wert plus Ergebnisse der Multiplikationen), dividiere durch 103 und ermittle den Rest.

  5. 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:

bullet

Beginn des Barcode-Strings: <Start B>040000769458734 

bullet

Umsetzen des Strings in Werte und Gewichtung:
Zeichen<Start B>040000769458734
Wert104162016161616232225202124231920
Gewichtung  1 2 3 4 5 6 7 8 9101112131415
Ergebnisse104164048648096161176225200231288299266300
Summe Ergebnisse: 2594

bulletRest der Division Summe Ergebnisse / 103: 2594 MOD 103 = 19
bullet19 entspricht dem Zeichen 3 in der Zeichensatztabelle
bulletFertiger Barcode-String: <Start B>0400007694587343<Stop> 

Das letzte Zeichen 3  (vom Beispiel) darf nicht als Wert unterhalb des Barcodes ausgegeben werden.

Beispiel Betriebsnummer 276153550330002 im Charset C:

bulletBarcode-String 2761535503300020 (eine 0 angehängt, damit Länge geradzahlig ist); umsetzen in 2er-Paare anhand Zeichensatztabelle: ;]UW#> 4
bulletBeginn des Barcode-Strings: <Start C>;]UW#> 4
bullet

Umsetzen des Strings in Werte und Gewichtung:
Zeichen<Start C>2761535503300020
Wert10527615355330020
Gewichtung  1 2 3 4 5678
Ergebnisse10527122159220151800160

Summe Ergebnisse: 988

bulletRest der Division Summe Ergebnisse / 103: 988 MOD 103 = 61
bullet61 entspricht dem Zeichen ] in der Zeichensatztabelle
bulletFertiger Barcode-String: <Start C>;]UW#> 4]<Stop> 

Zeichensatztabelle "Code 128"

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