条形码标准样本.docx
《条形码标准样本.docx》由会员分享,可在线阅读,更多相关《条形码标准样本.docx(11页珍藏版)》请在冰豆网上搜索。
条形码标准样本
UCC/EAN-128条码及其应用
UCC/EAN-128条码符号是ANCC系统(即EAN·UCC系统)中使用一种条码符号,也是一种商品条码符号。
UCC/EAN-128条码是普通128条码(即Code128码)子集。
经原国际物品编码协会(EAN)、美国统一代码委员会(UCC)和国际自动辨认制造商协会(AIM)批准,把起始符背面第一种字符是Code128码中“功能1”(FNC1)字符符号构造给EAN·UCC系统专门使用。
UCC/EAN-128条码是EAN·UCC系统中唯一可用于表达附加信息条码,可广泛用于非零售贸易项目、物流单元、资产、位置标记。
今年,UCC/EAN-128条码已被改名为GS1-128条码。
1.UCC/EAN-128条码特点
·UCC/EAN-128条码编码字符集属于字母/数字式字符集。
字符集中涉及,ASCII码(美国信息互换原则码)中码值从00至127128个码所代表字符(这正是128条码被称作Code128因素)以及00至99这100个两位数字。
其中ASCII码字符涉及,0~9这十个数字,所有英文大小写字母,“!
”、“,”、“+”、“-”、“*”、“/”、“@”、“空格”等符号以及“DEL”、“ESC”等控制字符。
但是UCC/EAN-128条码不使用“空格”符号。
注:
通过使用功能4(FNC4)字符,Code128条码还能对ASCII值为128~255字符编码,这一功能保存在将来使用,但UCC/EAN-128条码不使用。
·UCC/EAN-128条码使用一种起始符加一种FNC1字符双字符起始图形,这是UCC/EAN-128条码特殊标志。
·除终结符外,每个条码字符由3个条和3个空构成。
每个条或空由1~4个模块构成,每个条码字符总模块数为11。
UCC/EAN-128码属于模块组配条码,又称“n,k”条码,即每个字符总模块数为11(n=11)、由3个条和3个空(k=3)构成。
终结符由4个条和3个空构成。
·字符与字符是紧密相连,不需要字符间隔,因此UCC/EAN-128码是持续型条码。
·UCC/EAN-128码是非定长条码,字符个数可依照实际需要拟定,但是在符号物理长度和数据字符个数方面有一定限制,即每个符号最大物理长度为165mm、数据字符个数最多为48个。
·可双向译码,即从左至右或从右至左扫描都可以对UCC/EAN-128码译码。
·有字符自校验功能。
·有一种必须符号校验字符。
但符号校验字符不是数据一某些,不在供人辨认字符中表达,也不在译码时输出。
2.符号构造
UCC/EAN-128条码符号由左侧空白区、一种起始符(StartA,StartB或StartC)和一种FNC1字符构成双字符起始图形、数据字符(涉及应用标记符)、一种符号校验字符、终结符、右侧空白区及供人辨认字符构成,见图1。
图1UCC/EAN-128条码符号构造
3.符号字符构造和编码
3.1符号字符构造
如前所述,除终结符外,每个条码字符由3个条和3个空构成。
每个条或空由1~4个模块构成,每个条码字符总模块数为11,示例见图2。
1
2
3
4
5
6
7
8
9
10
11
2
1
1
2
3
2
“StartC”字符
1
2
3
4
5
6
7
8
9
10
11
4
3
1
1
1
2
3
1
1
“FNC1”字符
1
2
3
4
5
6
7
8
9
10
11
1
3
1
3
2
1
符号字符值为35字符
图2符号字符构造示例
终结符由4个条和3个空构成,共13个模块,见图3。
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
3
1
1
1
2
图3终结符构造
由符号字符构造可见,每个符号字符中所有条模块总数为偶数,所有空模块总数为奇数,运用这一奇偶特性可以实现字符自校验。
3.2符号字符集
Code128(UCC/EAN-128)条码符号字符集(某些节选)见表1。
表1Code128符号字符集(某些节选)
符号
字符
值
字符集A
字符集A字符ASCII值
字符集B
字符集B字符ASCII值
字符集C
单元宽度
(模块数)
字符图形
条
空
条
空
条
空
1
2
3
4
5
6
7
8
9
10
11
0
空格
32
空格
32
00
2
1
2
2
2
2
1
!
33
!
33
01
2
2
2
1
2
2
2
"
34
"
34
02
2
2
2
2
2
1
3
#
35
#
35
03
1
2
1
2
2
3
24
8
56
8
56
24
3
1
1
2
2
2
25
9
57
9
57
25
3
2
1
1
2
2
33
A
65
A
65
33
1
1
1
3
2
3
34
B
66
B
66
34
1
3
1
1
2
3
65
SOH
01
a
97
65
1
2
1
1
2
4
66
STX
02
b
98
66
1
2
1
4
2
1
98
SHIFT
SHIFT
98
4
1
1
3
1
1
99
CODEC
CODEC
99
1
1
3
1
4
1
100
CODEB
FNC4
CODEB
1
1
4
1
3
1
101
FNC4
CODEA
CODEA
3
1
1
1
4
1
102
FNC1
FNC1
FNC1
4
1
1
1
3
1
103
StartA
2
1
1
4
1
2
104
StartB
2
1
1
2
1
4
105
StartC
2
1
1
2
3
2
符号
字符值
字符集
A
字符集
B
字符集
C
单元宽度
(模块数)
字符图形
—
Stop(终结符)
B
S
B
S
B
S
B
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
3
1
1
1
2
Code128(UCC/EAN-128)条码有三个符号字符集,分别是字符集A、字符集B和字符集C。
字符集A涉及:
ASCII值为00~95字符,即所有大写英文字母、数字0~9、标点字符、控制字符;7个特殊字符。
字符集B涉及:
ASCII值为32~127字符,即所有大、小写英文字母、数字0~9、标点字符;7个特殊字符。
字符集C涉及:
100个两位数字字符00~99(这样每个符号字符可以表达两个数字);3个特殊字符。
虽然Code128(UCC/EAN-128)条码有三个符号字符集,但是事实上三个字符集共同使用着一套符号字符值和符号字符条空图形,也就是说,用一套符号字符条空图形来表达三个符号字符集字符。
例如在表1中,字符值为65符号字符图形是“条空条空条空”宽度(模块数)为“121124”条空图形,它可以表达字符集A中“SOH”、字符集B中“a”和字符集C中“65”。
为了能实现用一套符号字符图形来表达三个符号字符集字符,需要使用某些起始定义字符、切换字符和转换字符来阐明符号字符图形表达是哪一种字符集字符,表1字符值从98至105字符中就有这样某些字符:
·起始符A(StartA)——定义符号以字符集A开始。
·起始符B(StartB)——定义符号以字符集B开始。
·起始符C(StartC)——定义符号以字符集C开始。
·切换字符(CODEA、CODEB、CODEC)——把先前定义字符集切换到切换字符所定义新字符集。
例如,CODEA切换到字符集A,依此类推。
·转换字符(SHIFT)——把紧跟其后一种字符由字符集A转换到字符集B或由字符集B转换到字符集A,在被转换那个字符背面字符则自动恢复到转换字符之前定义字符集A或B。
Code128(UCC/EAN-128)码符号字符中有四个功能字符:
FNC1、FNC2、FNC3和FNC4。
FNC1用途之一是紧跟在起始符Start(A或B或C)背面,形成特殊Start(A或B或C)+FNC1双字符起始符号供UCC/EAN-128码专用,作为区别UCC/EAN-128码和普通128码标志。
FNC1另一种用途是,当把各种应用标记符及其数据域放在一种条码符号中时,FNC1作为分隔符使用。
FNC3(初始化)用于批示条码识读设备将包括此字符数据视为初始化或对条码识读设备重新编程。
FNC2(信息添加)和FNC4(扩展ASCII字符集)不在UCC·EAN系统中使用。
注:
如果FNC1出当前起始符背面第一种位置或在数字区域第奇数个位置,将其视为2位数字,以拟定适当字符集。
除终结符外,Code128(UCC/EAN-128)码每个符号字符都被赋予一种字符值,字符值可以在拟定128码符号校验字符计算过程中使用。
3.3符号编码规则
3.3.1起始符、切换字符和转换字符使用规则
由于UCC/EAN-128码(或其他128码)有三个字符集可供编码使用,通过使用不同起始、切换和转换字符组合,可以对相似数据有不同符号编码表达。
但是,编码有一种原则,就是应当使表达给定数据时符号字符个数至少,从而使符号长度最小。
例如,在对多位数字数据进行符号编码时应优先采用字符集C,这样每两位数字可用一种符号字符编码,减少了符号字符个数。
1、起始符(StartA、B或C)拟定
a)如果数据以偶数位数字或4位以上数字开始,用StartC。
b)如果数据以ASCII控制字符开始,用StartA。
c)其他状况下用StartB。
2、切换字符(CODEA、B或C)使用
a)如果使用了起始符StartC,且数据中连在一起数字个数为奇数,应在最后一位数字前加入切换字符CODEA或CODEB。
最后一位数字背面紧跟是ASCII控制字符加入CODEA,否则加入CODEB。
b)当采用字符集A或B,数据中浮现4个或更多连在一起数字时,若为偶数个数字则在第一种数字前插入CODEC;若为奇数个数字则在第一种数字后插入CODEC,切换到字符集C。
c)当采用字符集C,数据中浮现一种非数字字符时,应在该字符前加入切换字符CODEA或CODEB。
该字符是ASCII控制字符加入CodeA,否则加入CODEB。
3、转换字符(SHIFT)使用
a)当采用字符集B,数据中浮现ASCII控制字符时,若该字符后有小写英文字母,则在该字符前插入转换字符SHIFT;否则在该字符前插入切换字符CODEA切换到字符集A。
b)当采用字符集A,数据中浮现小写英文字母时,若该小写字母背面、另一种小写字母前有ASCII控制字符,则在该小写字母插入转换字符SHIFT;否则在该小写字母前插入切换字符CODEB切换到字符集B。
如前所述,使用不同起始、切换和转换字符组合,可以对相似数据有不同符号编码表达。
例如,对数据“(01)92”进行符号编码,按照规则,用“StartC+FNC1+数据字符+校验符+终结符”是最佳方案,由此生成条码符号见图1,但咱们经常用到用“StartB+FNC1+CODEC+数据字符+校验符+终结符”编码表达,这在EAN·UCC规范(GS1规范)中也屡见不鲜,这种编码生成条码符号见图4。
比较图1和图4条码符号可见,两个符号起始符不同;后一种符号比前一种多一种“CODEC”字符;两个符号校验字符不同,前者为“17”,后者为“68”。
两个符号使用字符和字符个数有差别,经计算得出校验字符值就也许不同,但由于校验字符不在供人辨认字符中表达,也不在译码时输出,因而两个符号供人辨认字符及译码成果都相似。
但是后一种编码表达比前一种多用了一种字符,并且有“多此一举”之嫌。
究其因素,是编制者以为“FNC1”是非数字字符,“FNC1”不可在字符集C中使用,因而要以“StartB”开始。
其实咱们看字符集便知,“FNC1”是三个字符集均有字符,并且从3.2中注可知,“FNC1”普通是被当作2位数字对待,它固然可以在字符集C中使用。
同一数据也许有不同128条码符号编码表达,这经常使刚接触128条码人困惑不解。
理解了上述编码原理就不难理解了。
正像用各种办法都能对的解答同一道数学题同样,各种符号编码表达只要能对的地表达数据、能对的被译码,咱们就不能评价哪一种对、哪一种错,只能说哪一种更简捷。
图4相似数据(同图1中)、不同符号编码表达
3.3.2单元数据串编码规则
如前所述,UCC/EAN-128码是非定长条码,除了可表达贸易项目的记(如全球贸易项目代码)外,还可用于表达批号、生产日期、贸易计量(重量、尺寸、体积等)、保质期等各种附加信息,从而广泛用于非零售贸易项目、物流单元、资产、位置标记。
诸如贸易项目的记、批号、生产日期等这样在构造和意义上已经定义了一条数据即单元数据串。
每个单元数据串由一种标记某些(前缀码或应用标记符)和一种数据某些构成。
例如,“(01)92”是表达定量贸易项目的记单元数据串;“(11)060818”是表达生产日期单元数据串,其中圆括号中数字是应用标记符,圆括号后数据是数据某些。
在供人辨认字符中,应当用圆括号把应用标记符括起来,以便于识读,但这些圆括号不是数据一某些,不应在128条码中编码表达这些圆括号。
在把各种单元数据串编码于一种128条码中时,要遵循“先预定义长度单元数据串,后可变长度单元数据串”原则。
所谓预定义长度单元数据串是指那些预先设定了数据串长度且长度不变单元数据串,如贸易项目的记、生产日期等单元数据串,这些单元数据串使用应用标记符(前两位)和字符总数见表2。
预定义长度单元数据串背面不需要插入分隔符(FNC1字符);非预定义长度单元数据串(即可变长度单元数据串)背面则必要插入分隔符,但128条码中最后一种单元数据串背面不需要插入分隔符。
“先预定义长度单元数据串”目就是为了要减少分隔符用量。
表2预定义长度单元数据串应用标记符及字符总数
应用标记符
(前两位)
数据串字符总数
(含应用标记符)
应用标记符
(前两位)
数据串字符总数
(含应用标记符)
00
20
17
8
01
16
18﹡
8
02
16
19﹡
8
03﹡
16
20
4
04﹡
18
31
10
11
8
32
10
12
8
33
10
13
8
34
10
14﹡
8
35﹡
10
15
8
36﹡
10
16﹡
8
41
16
注:
打﹡号是预留、尚未分派应用标记符。
·链接所谓链接即在符号编码时把两个以上单元数据串连在一起。
链接时按照“预定义长度单元数据串背面不加分隔符(FNC1字符),可变长度单元数据串背面加分隔符”规则进行解决,然后看数据串接合部与否需要进行字符集转换(注),再把各单元数据串连接在一起即可。
还要注意:
最后一种单元数据串背面不加分隔符;形成条码符号,数据字符个数不超过48个,物理长度不不不大于165mm。
(注):
在这方面咱们又看到“多此一举”例子(见GS1规范5.3),在两个均使用字符集C可变长度单元数据串“单价365”和“批号123456”之间加入“CODEB+FNC1+CODEC”,再进行链接。
其实只需加入“FNC1”即可,因素请读者自行分析。
4原则译码算法
UCC/EAN-128条码原则译码算法用测量符号字符中相邻两个条同侧边(相似边)之间距离、然后判断同侧边之间距离中所包括模块宽度个数办法进行译码。
除终结符外,每个条码字符由3个条和3个空构成,因而每个字符有4个需要测量同侧边之间距离e1~e4(见图5),每个字符e1~e4相应4个依次排列模块宽度数具备区别于其她字符特性,依照这种特性就可以拟定字符值。
译码过程规定同侧边之间距离浮现偏差不超过±0.5个模块宽度(0.5p/11)。
由于终结符由4个条和3个空构成,译码时只取终结符从左至右6个单元即3个条和3个空(从左至右扫描时)或从右至左6个单元(从右至左扫描时)进行上述测量、判断。
如前所述,每个符号字符中所有条模块总数为偶数,原则译码算法运用这一特性来进行字符自校验:
求出被译码符号字符中3个条应有模块总数V,测量该字符中3个条宽度之和(b1+b2+b3)及字符宽度p,核对式子
(V–1.75)p/11<(b1+b2+b3)<(V+1.75)p/11与否成立,如果不成立则字符是错误。
图5符号字符与译码关于尺寸
5符号尺寸规定
UCC/EAN-128条码符号X尺寸(设计模块宽度)应在0.250mm~1.016mm范畴内,在一种给定符号中X尺寸应为一种定值。
UCC/EAN-128条码符号左、右空白区最小宽度均为10X。
UCC/EAN-128条码符号条高普通状况下为32mm。
UCC/EAN-128条码符号长度不能超过165mm。
6符号检测办法和质量规定
采用GB/T14258-《条码符号印制质量检查》中规定办法进行检测。
要注意是:
对空白区宽度检测成果要进行分级,空白区宽度够(≥10Z,Z为印制条码符号实际模块宽度)评为4级;空白区宽度不够(<10Z)评为0级。
空白区宽度级别还要参加符号级别评估。
可译码度值检测、计算办法如下:
各条码字符与字符中相邻两条左、右同侧边沿之间距离有关可译码度值V1按公式
(1)计算。
(1)
式中:
ei——字符中相邻两条左、右同侧边沿之间距离(i=1,2,3,4)e1、e2、e3、e4测量值;
RTj——原则阈值(j=1,2,3,4,5,6,7),其中RT1=1.5p/11、RT2=2.5p/11、RT3=3.5p/11、RT4=4.5p/11、RT5=5.5p/11、RT6=6.5p/11、RT7=7.5p/11;
p——相应字符宽度测量值。
各条码字符与字符中条宽度总和有关可译码度值V2按公式
(2)计算。
(2)
式中:
Wb——字符中条宽度总和测量值;
p——相应字符宽度测量值;
M——字符中条模块数。
注:
由于终结符比其他条码字符多一种终结条,终结符可译码度值V1和V2都需要计算两次,第一次使用从左至右6个单元,第二次使用从右至左6个单元,取两次计算值中较小者。
各条码字符可译码度值为相应V1值、V2值中较小者。
扫描反射率曲线可译码度为该扫描反射率曲线所有条码字符可译码度值中最小值。
UCC/EAN-128条码符号符号级别应不低于1.5/10/670。