条形码
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。
一维条形码:只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息。常用码制包括EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码及Codabar(库德巴码)等。
EAN码
EAN码是国际物品编码协会制定的一种商品用条码,通用于全世界。EAN码符号有标准版(EAN-13)和缩短版(EAN-8)两种。标准版表示13位数字,又称为EAN13码,缩短版表示8位数字,又称EAN8。两种条码的最后一位为校验位,由前面的12位或7位数字计算得出。
它包括条码符号的图形部分和供人识读部分。图形部分包含起始符、左侧数据符、中间分隔符、右侧数据符、校验符、终止符以及左侧空白区和右侧空白区。图形部分的条和空按照一定的规则排列而成。整个条码符号通常由专门的条码符号生成软件生成。
国内推行使用的是EAN商品条形码,可分为EAN-13(标准版)和EAN-8(缩短版)两种。
Code128
条形码其实是分成很多类的,虽然他们看起来都差不多……
常见的条形码的码制被称为39码、128码、417码等等。我今天主要讲的是128码即CODE128。
Code128码其实还分成三类,即128A、128B、128C。它们的区别就是对应的字符表不一样。
那么Code128码到底怎么读呢?
从左往右是黑白相间的条形码,黑的叫“条”(B),白的叫“空”(S)。
如果你仔细看,条和空都有4种不同的宽度。我们将它从细到粗赋予1、2、3、4这几个值。
然后我们开始按照粗细的值来阅读条码、结果如下:
211232231131221213131222212222221224121213121211321132331112
注意这个结果是黑白相间的。别只顾着读“条”忘了都空。这边总共有61位。
Code128码有一个头一个尾。
尾总是2331112,这代表Code128已经结束。其余的部分是6位为一个块,包括头。
头有3种:A)211412 B)211214 C)211232 。这分别表示此Code128是什么类型的。(ABC其中一种)
我们将我们读出来的码,去掉头和尾,重新分一次块:
231131 | 221213 | 131222 | 212222 | 221224 | 121213 | 121211 | 32113
正好是6位为一块。其中最后一个块(除去尾段)是校验位,用于检查该条形码是否被正确编码。
然后,我们有一个字符表。(应该说是我有这张表)这张字符对应各个编号是表示的什么。
我们这个是Code128C型。C型码是纯数字的,每个块对应2位数字。
查表可得 50 09 05 00 01 91 91 。
有了这些知识,我们就可以尝试去写一个程序去生成条形码和识别条形码。
其实生成是比较简单的,而识别就比较麻烦了。通常超市是使用条码枪,通过光学原理来识别的,因为黑白条纹的反光特性不一样。
要是用软件对图像进行识别,会有些麻烦。但是,这正是我们要做的。
附:
Code128 字符表:
可以看出从0-63这前64个字符中A类和B类是一样的。
其中有些控制字符,比如CodeA表示此字段下一个个块临时使用Code128A的字符表中的字符。
还有一些其他的,不是很常见,有兴趣的朋友可以参考GBT 15425-2002 EAN UCC系统 128条码 标准。
注:ABC分别为128A类,128B类,128C类的字符表。有些B类的字符为空表示和A类的一样。
B,S,B,S,B,S// A B C
2,1,2,2,2,2,// sp 00
2,2,2,1,2,2,// ! 01
2,2,2,2,2,1,// " 02
1,2,1,2,2,3,// # 03
1,2,1,3,2,2,// $ 04
1,3,1,2,2,2,// % 05
1,2,2,2,1,3,// & 06
1,2,2,3,1,2,// ... 07
1,3,2,2,1,2,// ( 08
2,2,1,2,1,3,// ) 09
2,2,1,3,1,2,// * 10
2,3,1,2,1,2,// + 11
1,1,2,2,3,2,// , 12
1,2,2,1,3,2,// - 13
1,2,2,2,3,1,// . 14
1,1,3,2,2,2,// / 15
1,2,3,1,2,2,// 0 16
1,2,3,2,2,1,// 1 17
2,2,3,2,1,1,// 2 18
2,2,1,1,3,2,// 3 19
2,2,1,2,3,1,// 4 20
2,1,3,2,1,2,// 5 21
2,2,3,1,1,2,// 6 22
3,1,2,1,3,1,// 7 23
3,1,1,2,2,2,// 8 24
3,2,1,1,2,2,// 9 25
3,2,1,2,2,1,// : 26
3,1,2,2,1,2,// ; 27
3,2,2,1,1,2,// < 28
3,2,2,2,1,1,// = 29
2,1,2,1,2,3,// > 30
2,1,2,3,2,1,// ? 31
2,3,2,1,2,1,// @ 32
1,1,1,3,2,3,// A 33
1,3,1,1,2,3,// B 34
1,3,1,3,2,1,// C 35
1,1,2,3,1,3,// D 36
1,3,2,1,1,3,// E 37
1,3,2,3,1,1,// F 38
2,1,1,3,1,3,// G 39
2,3,1,1,1,3,// H 40
2,3,1,3,1,1,// I 41
1,1,2,1,3,3,// J 42
1,1,2,3,3,1,// K 43
1,3,2,1,3,1,// L 44
1,1,3,1,2,3,// M 45
1,1,3,3,2,1,// N 46
1,3,3,1,2,1,// O 47
3,1,3,1,2,1,// P 48
2,1,1,3,3,1,// Q 49
2,3,1,1,3,1,// R 50
2,1,3,1,1,3,// S 51
2,1,3,3,1,1,// T 52
2,1,3,1,3,1,// U 53
3,1,1,1,2,3,// V 54
3,1,1,3,2,1,// W 55
3,3,1,1,2,1,// X 56
3,1,2,1,1,3,// Y 57
3,1,2,3,1,1,// Z 58
3,3,2,1,1,1,// [ 59
3,1,3,1,1,1,// 60
2,2,1,4,1,1,// ] 61
4,3,1,1,1,1,// ^ 62
1,1,1,2,2,4,// _ 63
1,1,1,4,2,2,// NUL ' 64
1,2,1,1,2,4,// SOH a 65
1,2,1,4,2,1,// STX b 66
1,4,1,1,2,2,// ETX c 67
1,4,1,2,2,1,// EOT d 68
1,1,2,2,1,4,// ENQ e 69
1,1,2,4,1,2,// ACK f 70
1,2,2,1,1,4,// BEL g 71
1,2,2,4,1,1,// BS h 72
1,4,2,1,1,2,// HT i 73
1,4,2,2,1,1,// LF j 74
2,4,1,2,1,1,// VT k 75
2,2,1,1,1,4,// FF l 76
4,1,3,1,1,1,// CR m 77
2,4,1,1,1,2,// SO n 78
1,3,4,1,1,1,// SI o 79
1,1,1,2,4,2,// DLE p 80
1,2,1,1,4,2,// DC1 q 81
1,2,1,2,4,1,// DC2 r 82
1,1,4,2,1,2,// DC3 s 83
1,2,4,1,1,2,// DC4 t 84
1,2,4,2,1,1,// NAK u 85
4,1,1,2,1,2,// SYN v 86
4,2,1,1,1,2,// ETB w 87
4,2,1,2,1,1,// CAN x 88
2,1,2,1,3,1,// EM y 89
2,1,4,1,2,1,// SUB z 90
4,1,2,1,2,1,// ESC { 91
1,1,1,1,4,3,// FS | 92
1,1,1,3,4,1,// GS } 93
1,3,1,1,4,1,// RS ~ 94
1,1,4,1,1,3,// US DEL 95
1,1,4,3,1,1,// FNC3 FNC3 96
4,1,1,1,1,3,// FNC2 FNC2 97
4,1,1,3,1,1,// SHIFT SHIFT 98
1,1,3,1,4,1,// CodeC CodeC 99
1,1,4,1,3,1,// CodeB FNC4 CodeB
3,1,1,1,4,1,// FNC4 CodeA CodeA
4,1,1,1,3,1,// FNC1 FNC1 FNC1
2,1,1,4,1,2,// StartA
2,1,1,2,1,4,// StartB
2,1,1,2,3,2,// StartC
2,3,3,1,1,1,2,// Stop
Code128码于1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。
Code128特性:
1、具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用;
2、允许双向扫描;
3、可自行决定是否加上检验位;
4、条码长度可调,但包括开始位和结束位在内,不可超过232个字元;
5、同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度。
Code128各编码方式的编码范围:
1、Code128A:标准数字和字母,控制符,特殊字符;
2、Code128B:标准数字和字母,小写字母,特殊字符;
3、Code128C/EAN128:[00]-[99]的数字对集合,共100个,即只能表示偶数位长度的数字。
Code128编码规则:开始位 + [FNC1(为EAN128码时加)] + 数据位 + 检验位 + 结束位
Code128检验位计算:(开始位对应的ID值 + 每位数据在整个数据中的位置×每位数据对应的ID值)% 103
Code128编码表:
ID |
Code128A |
Code128B |
Code128C |
BandCode |
编码值 |
0 |
SP |
SP |
0 |
212222 |
bbsbbssbbss |
1 |
! |
! |
1 |
222122 |
bbssbbsbbss |
2 |
" |
" |
2 |
222221 |
bbssbbssbbs |
3 |
# |
# |
3 |
121223 |
bssbssbbsss |
4 |
$ |
$ |
4 |
121322 |
bssbsssbbss |
5 |
% |
% |
5 |
131222 |
bsssbssbbss |
6 |
& |
& |
6 |
122213 |
bssbbssbsss |
7 |
' |
' |
7 |
122312 |
bssbbsssbss |
8 |
( |
( |
8 |
132212 |
bsssbbssbss |
9 |
) |
) |
9 |
221213 |
bbssbssbsss |
10 |
* |
* |
10 |
221312 |
bbssbsssbss |
11 |
+ |
+ |
11 |
231212 |
bbsssbssbss |
12 |
, |
, |
12 |
112232 |
bsbbssbbbss |
13 |
- |
- |
13 |
122132 |
bssbbsbbbss |
14 |
. |
. |
14 |
122231 |
bssbbssbbbs |
15 |
/ |
/ |
15 |
113222 |
bsbbbssbbss |
16 |
0 |
0 |
16 |
123122 |
bssbbbsbbss |
17 |
1 |
1 |
17 |
123221 |
bssbbbssbbs |
18 |
2 |
2 |
18 |
223211 |
bbssbbbssbs |
19 |
3 |
3 |
19 |
221132 |
bbssbsbbbss |
20 |
4 |
4 |
20 |
221231 |
bbssbssbbbs |
21 |
5 |
5 |
21 |
213212 |
bbsbbbssbss |
22 |
6 |
6 |
22 |
223112 |
bbssbbbsbss |
23 |
7 |
7 |
23 |
312131 |
bbbsbbsbbbs |
24 |
8 |
8 |
24 |
311222 |
bbbsbssbbss |
25 |
9 |
9 |
25 |
321122 |
bbbssbsbbss |
26 |
: |
: |
26 |
321221 |
bbbssbssbbs |
27 |
; |
; |
27 |
312212 |
bbbsbbssbss |
28 |
< |
< |
28 |
322112 |
bbbssbbsbss |
29 |
= |
= |
29 |
322211 |
bbbssbbssbs |
30 |
> |
> |
30 |
212123 |
bbsbbsbbsss |
31 |
? |
? |
31 |
212321 |
bbsbbsssbbs |
32 |
@ |
@ |
32 |
232121 |
bbsssbbsbbs |
33 |
A |
A |
33 |
111323 |
bsbsssbbsss |
34 |
B |
B |
34 |
131123 |
bsssbsbbsss |
35 |
C |
C |
35 |
131321 |
bsssbsssbbs |
36 |
D |
D |
36 |
112313 |
bsbbsssbsss |
37 |
E |
E |
37 |
132113 |
bsssbbsbsss |
38 |
F |
F |
38 |
132311 |
bsssbbsssbs |
39 |
G |
G |
39 |
211313 |
bbsbsssbsss |
40 |
H |
H |
40 |
231113 |
bbsssbsbsss |
41 |
I |
I |
41 |
231311 |
bbsssbsssbs |
42 |
J |
J |
42 |
112133 |
bsbbsbbbsss |
43 |
K |
K |
43 |
112331 |
bsbbsssbbbs |
44 |
L |
L |
44 |
132131 |
bsssbbsbbbs |
45 |
M |
M |
45 |
113123 |
bsbbbsbbsss |
46 |
N |
N |
46 |
113321 |
bsbbbsssbbs |
47 |
O |
O |
47 |
133121 |
bsssbbbsbbs |
48 |
P |
P |
48 |
313121 |
bbbsbbbsbbs |
49 |
Q |
Q |
49 |
211331 |
bbsbsssbbbs |
50 |
R |
R |
50 |
231131 |
bbsssbsbbbs |
51 |
S |
S |
51 |
213113 |
bbsbbbsbsss |
52 |
T |
T |
52 |
213311 |
bbsbbbsssbs |
53 |
U |
U |
53 |
213131 |
bbsbbbsbbbs |
54 |
V |
V |
54 |
311123 |
bbbsbsbbsss |
55 |
W |
W |
55 |
311321 |
bbbsbsssbbs |
56 |
X |
X |
56 |
331121 |
bbbsssbsbbs |
57 |
Y |
Y |
57 |
312113 |
bbbsbbsbsss |
58 |
Z |
Z |
58 |
312311 |
bbbsbbsssbs |
59 |
[ |
[ |
59 |
332111 |
bbbsssbbsbs |
60 |
|
|
60 |
314111 |
bbbsbbbbsbs |
61 |
] |
] |
61 |
221411 |
bbssbssssbs |
62 |
^ |
^ |
62 |
431111 |
bbbbsssbsbs |
63 |
_ |
_ |
63 |
111224 |
bsbssbbssss |
64 |
NUL |
` |
64 |
111422 |
bsbssssbbss |
65 |
SOH |
a |
65 |
121124 |
bssbsbbssss |
66 |
STX |
b |
66 |
121421 |
bssbssssbbs |
67 |
ETX |
c |
67 |
141122 |
bssssbsbbss |
68 |
EOT |
d |
68 |
141221 |
bssssbssbbs |
69 |
ENQ |
e |
69 |
112214 |
bsbbssbssss |
70 |
ACK |
f |
70 |
112412 |
bsbbssssbss |
71 |
BEL |
g |
71 |
122114 |
bssbbsbssss |
72 |
BS |
h |
72 |
122411 |
bssbbssssbs |
73 |
HT |
i |
73 |
142112 |
bssssbbsbss |
74 |
LF |
j |
74 |
142211 |
bssssbbssbs |
75 |
VT |
k |
75 |
241211 |
bbssssbssbs |
76 |
FF |
I |
76 |
221114 |
bbssbsbssss |
77 |
CR |
m |
77 |
413111 |
bbbbsbbbsbs |
78 |
SO |
n |
78 |
241112 |
bbssssbsbss |
79 |
SI |
o |
79 |
134111 |
bsssbbbbsbs |
80 |
DLE |
p |
80 |
111242 |
bsbssbbbbss |
81 |
DC1 |
q |
81 |
121142 |
bssbsbbbbss |
82 |
DC2 |
r |
82 |
121241 |
bssbssbbbbs |
83 |
DC3 |
s |
83 |
114212 |
bsbbbbssbss |
84 |
DC4 |
t |
84 |
124112 |
bssbbbbsbss |
85 |
NAK |
u |
85 |
124211 |
bssbbbbssbs |
86 |
SYN |
v |
86 |
411212 |
bbbbsbssbss |
87 |
ETB |
w |
87 |
421112 |
bbbbssbsbss |
88 |
CAN |
x |
88 |
421211 |
bbbbssbssbs |
89 |
EM |
y |
89 |
212141 |
bbsbbsbbbbs |
90 |
SUB |
z |
90 |
214121 |
bbsbbbbsbbs |
91 |
ESC |
{ |
91 |
412121 |
bbbbsbbsbbs |
92 |
FS |
| |
92 |
111143 |
bsbsbbbbsss |
93 |
GS |
} |
93 |
111341 |
bsbsssbbbbs |
94 |
RS |
~ |
94 |
131141 |
bsssbsbbbbs |
95 |
US |
DEL |
95 |
114113 |
bsbbbbsbsss |
96 |
FNC3 |
FNC3 |
96 |
114311 |
bsbbbbsssbs |
97 |
FNC2 |
FNC2 |
97 |
411113 |
bbbbsbsbsss |
98 |
SHIFT |
SHIFT |
98 |
411311 |
bbbbsbsssbs |
99 |
CODEC |
CODEC |
99 |
113141 |
bsbbbsbbbbs |
100 |
CODEB |
FNC4 |
CODEB |
114131 |
bsbbbbsbbbs |
101 |
FNC4 |
CODEA |
CODEA |
311141 |
bbbsbsbbbbs |
102 |
FNC1 |
FNC1 |
FNC1 |
411131 |
bbbbsbsbbbs |
103 |
StartA |
StartA |
StartA |
211412 |
bbsbssssbss |
104 |
StartB |
StartB |
StartB |
211214 |
bbsbssbssss |
105 |
StartC |
StartC |
StartC |
211232 |
bbsbssbbbss |
106 |
Stop |
Stop |
Stop |
2331112 |
bbsssbbbsbsbb |
Code128编码示例:以 95270078 为例
Code128A,
开始位对应的ID为103,第1位数据9对应的ID为25,第2位数据5对应的ID为21,依此类推,可以计算检验位 = (103 + 1*25 +
2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 21,即检验位的ID为21。
对照编码表,95270078 编码表示为:开始位StartA(bbsbssssbss)+ 数据位[9(bbbssbsbbss)+ 5(bbsbbbssbss)+ 2(bbssbbbssbs)+ 7(bbbsbbsbbbs)+ 0(bssbbbsbbss)+ 0(bssbbbsbbss)+ 7(bbbsbbsbbbs)+ 8(bbbsbssbbss)]+ 检验位21(bbsbbbssbss)+ 结束位Stop(bbsssbbbsbsbb),
即:bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb。
若要打印,只需将b用黑色线标出,s用白色线标出,一个简单的条形码生成程序就完成了!
128B
与128A类似,128C只能对长度为偶数的数字串编码,每两个数字为一位,所以输出的信息压缩了一半,打印的条形码因此也就较短。接上例,第1位数据
95对应ID为95,第2位数据27对应ID为27,第3位数据00对应ID为0,第4位数据78对应ID为78,所以检验位 = (105 +
1*95 + 2*27 + 3*0 + 4*78) % 103 = 51
EAN128与Code128C相同,只是在开始位后加多一个控制位FNC1(ID为102),同时将FNC1做为第1位数据加入到检验位的计算。
各种方式的编码结果罗列如下:
编码方式 |
开始位 |
FNC1 |
数据位 |
检验位 |
结束位 |
编码结果 |
Code128A |
StartA |
无 |
9 + 5 + 2 + 7 + 0 + 0 + 7 + 8 |
(103 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 21 |
Stop |
bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb |
Code128B |
StartB |
无 |
9 + 5 + 2 + 7 + 0 + 0 + 7 + 8 |
(104 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 22 |
Stop |
bbsbssbssssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbssbbbsbssbbsssbbbsbsbb |
Code128C |
StartC |
无 |
95 + 27 + 00 + 78 |
(105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51 |
Stop |
bbsbssbbbssbsbbbbsbsssbbbsbbssbssbbsbbssbbssbbssssbsbssbbsbbbsbsssbbsssbbbsbsbb |
EAN128 |
StartC |
FNC1 |
95 + 27 + 00 + 78 |
(105 + 1*102 + 2*95 + 3*27 + 4*0 + 5*78) % 103 = 44 |
Stop |
bbsbssbbbssbbbbsbsbbbsbsbbbbsbsssbbbsbbssbssbbsbbssbbssbbssssbsbssbsssbbsbbbsbbsssbbbsbsbb |
Code 128 條碼
Code 128 編碼方式是屬於比較複雜的一種條碼,應用起來比較有彈性,在1981年開始流行起來。
Code 128 條碼主要特性有:
1.有A,B,C三種不同的編碼型態,可以提供128個標準的ASCII code字元.
包括: 0~9的數字,英文大小寫,各種特殊符號,以及控制碼。
2.有一檢查碼,可自由決定是否要列印。
3.在可藉由A、B、C三種不同編碼型態交叉使用,以縮短條碼的長度。
4.可允許由左至右,或由右至左,雙向掃瞄。
Code 128 條碼基本結構
圖一
Code 128 條碼內容主要有四個部份:
1.起始碼 (start code)
2.資料碼 (data code)
3.結束碼 (end code)
4.檢查碼 (check code):可有可無
Code 128 條碼字元編碼方式
Code 128 每一字元條碼結構由3條Bar及3條Space所組成.又細分為11等分,組成不同粗細比。字元最粗的線條最高可達最細的4倍。
例如:起始碼Code A
11010000100 條碼裡頭space最粗是最細線條的4倍
再舉個例子,我們以B型態中的特殊符號'/'說明
10111001100 最粗的bar是最細bar的3倍
起始碼與結束碼編碼方式
Code 128 條碼有A、B、C三種不同型態編碼的字元表,要選擇哪一種字元表取決於特殊控制碼Code A,Code B與Code C。
起始碼也有三種編碼型態:Code A,Code B,Code C
當起始碼為Code A時,後面的條碼資料則選擇A型態字元表編碼邏輯。
而起始碼為Code B時,後面的條碼資料則選擇B型態字元表編碼邏輯。
若全部為數字時可選擇Code C型態字元表編碼邏輯,以縮短條碼的列印長度。
每一類型的字元表內也有Code A,Code B,Code C,但條碼編碼邏輯與起始碼不同,請參閱【Code 128 條碼字元表】
接下來我們看三種起始碼的條碼編碼方式
Code A條碼資料為11010000100,條碼圖案為 ,相對值為103。
Code B條碼資料為11010010000,條碼圖案為 ,相對值為104。
Code C條碼資料為11010011100,條碼圖案為 ,相對值為105。
結束碼編碼方式
A,B,C三種不同型態編碼方式,結束碼均固定為1100011101011,條碼圖案為,相對值為106。
Code 128 條碼三種字元表型態編碼差異說明
1.A 型態字元表,支援的資料碼包含:標準ASCII=0 ~
ASCII=95等字元及控制碼部份,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128
條碼字元表中的A型態。(ASCII=0~31為控制碼,ASCII=32~95為可見字元。)
2.B型態字元表包含:標準ASCII=32 ~ ASCII=127等字元,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128 條碼字元表中的B型態。
3.C型態字元表主要支援數字00~99的編碼使用,若使用長數字的資料時,可以用C型態編碼,可縮短條碼列印的長度。數字00~99加上3個特殊控制字元,總共103個字元。
特殊控制字元說明
1.Code A:表示後面的字元編碼型態要使用A table。
2.Code B:表示後面的字元編碼型態要使用B table。
3.Code C:表示後面的字元編碼型態要使用C table。
4.Shift:等於Shift鍵的作用。
5.FNC 1:等於F1鍵的作用。
6.FNC 2:等於F2鍵的作用。
7.FNC 3:等於F3鍵的作用。
8.FNC 3:等於F4鍵的作用。
Code 128 條碼應用實例說明
1.Code C型態應用時機
我們舉以下例子,如果資料內如為數字0123456789,使用Code A及Code C條碼列印長度的差異,Code C條碼列印出來的長度較短。
Code A型態時的編碼如下圖
Code C型態時的編碼如下圖
2.Code A及Code C型態混合應用時機
前面4個字元ABCB使用A table編碼,所以起始碼以Code A開始,然後在數字0123456789之前加上Code C特殊控制碼,則後面的數字會轉換成C table編碼,如此就可以縮短條碼列印的長度。
Code 128 條碼檢查碼的計算方式
我們以起始碼Code B編碼的Andy’s條碼來說明
步驟一.計算出S值
S=103+(d1*1)+(d2*2)+ (d3*3)+ (d4*4)+ …
d1:表示資料第1個字元
因為起始碼為Code B,所以字元相對值使用B table。
則S=103+(33*1)+(78*2)+(68*3)+(89*4)+(7*5)+(83*6)=103+33+156+204+356+35+498=1385
步驟二.將S值除以103,取其餘數M值。
1385/103=13…46 ?取餘數M=46
步驟三.將M值46代入B table找到相對值的字元為N,即檢查碼為N。
提醒:
若資料碼裡有Code A,Code B,Code C型態轉換,檢查碼代入的依據均以起始碼相對應的字元組型態為主。
起始符(Unicode=00CC):ì
终止符(Unicode=00CE):Î
value95(Unicode=00C3):Ã
value96(Unicode=00C4):Ä
value97(Unicode=00C5):Å
value98(Unicode=00C6):Æ
value99(Unicode=00C7):Ç
value100(Unicode=00C8):è
value101(Unicode=00C9):é
value102(Unicode=00CA):ê