GB/T 17172-1997
本标准非等效采用国际自动识别制造商协会(AIMI)的《PDF417规范》。在技术上与国际自动识别制造商协会的《PDF417规范》相兼容,保证了本标准与国外先进标准的一致性,本标准根据我国二维条码的应用现状,在认真分析研究的基础上,对《PDF 417规范》进行了取舍和补充完善,保证了本标准在我国应用的可行性和实用性。
本标准的附录 A 为标准的附录;本标准的附录B、附录C、附录D、附录E都是提示的附录。本标准由中国物品编码中心提出并归口。本标准起草单位:中国物品编码中心。本标雁主要起草人:张成海、罗秋科、李素彩、郭卫华、赵楠、韩继明、刘芳、黄泽殷。120
1范围
中华人民共和国国家标准
七条码
417 Bar code
wwW.bzxz.Net本标准规定了四一七条码的相关定义、结构、尺寸及技术要求。本标准适用于数据采集与自动识别。2引用标准
GB/T 17172—1997
下列标准所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。GB12905—91条码系统通用术语条码符号术语GB/T15273.1一94信息处理八位单字节编码图形字符集第—部分:拉丁字母-3定义
本标准采用下列定义。
3.1符号字符symbol character
条码符号中,由特定的条、空组合而成的表示信息的基本单位。3.2码字 codeword
符号字符的值。
3.3 簇 cluster
构成四一七条码符号字符集的与码字集对应的相互独立的子集。3.4全球标记标识符Global Label Identifier(GLI)对数据流的一种特定解释的标识。3.5拒读错误rejectionerror
在确定位置上的符号字符的丢失或不可译码。3.6替代错误substitution error在随机位置上的符号字符的错误译码。4符号描述
4.1基本特性
四一七条码的基本特性见表 1。国家技术监督局1997-12-25批准1998-08-01实施
可编码字符集
字符自校验功能
符号尺寸
双向可读
错误纠正码字数
最大数据容量(错误纠正等级为0时)
附加特性
附加选择
1)X为符号的模块宽。
2)宏四一七条码见附录D。
3)截短四一七条码见附录C。
4.2符号结构
GB/T 17172—1997
表1·四一七条码的基本特性
全ASCII字符及扩展ASCII字符或8位二进制数据,多达811800种不同的字符集或解释
连续型,多行
高度:3到90行
宽度:90X到583X1)
2到512个
每个符号表示1850个大写字母
或2710个数字
或1108个字节
可选错误纠正等级
可跨行扫描
宏四一七条码2,全球标记标识符,裁短四一七条码3四一七条码符号是一个多行结构。符号的顶部和底部为空白区。上下空白区之间为多行结构。每行数据符号字符数相同,行与行左右对齐直接衔接。其最小行数为3,最大行数为90,见图1。每行构成如下:
a)左空白区
b)起始符
c)左行指示符号字符
d)1~30个数据符号字符
e)右行指示符号字符
f)终止符
g)右空白区
上空白区
下空白区
图1四一七条码符号的结构
4.3符号表示
4.3.1符号字符的结构
GB/T 17172—1997
每一符号字符由4个条和4个空构成,自左向右从条开始。每个条或空包含1~6个模块。在个符号字符中,4个条和4个空的总模块数为17,见图2。11|2|3|4|5|6|7|8|9|10|11/12|134|15|16|17]/22」
4.3.2码字集
图2符号字符
四一七条码码字集包含929个码字。码字取值范围为0~928。在码字集中,码字使用应遵守下列规码字0~899:根据当前的压缩模式和GLI解释,用于表示数据。码字900~928:在每一模式中,用于具有特定目的符号字符的表示。具体规定如下:码字900,901,902,913,924用于模式标识,见表2;码字925,926,927用于GLI,见4.3.7;码字922,923,928用于宏四一七条码,见附录D;码字921用于阅读器初始化,见4.3.8;码字903~~912,914~920保留待用。4.3.3符号字符的簇
四一一七条码符号字符集由三个簇构成,每一簇包括以不同的条、空形式表示的所有929个四一七条码的码字。在每一簇中,每一符号字符对应唯一的码字,其范围为0~928。附录A的表A1给出了每一簇的符号字符的条、空序列和它们所对应的码字。四一七条码使用簇号0,3,6。簇号的定义适用于所有四一七条码符号字符。四一七条码符号的每行只使用一个簇中的符号字符。同一簇每三行重复一次。第一行使用第0簇的符号字符,第2行使用第3簇的符号字符,第三行使用第6簇的符号字符,第四行使用第0簇的符号字符,以此类推。行号由上向下递增,最上一行行号为1。对于一个特定符号字符,其簇号由下式确定:簇号 =(b, - b2 → b, — b4 + 9)mod 9式中:b1,b2,b3,b4分别表示自左向右四个条的模块数(参见图2))。例:对于图2中的符号字符,其簇号计算如下:簇号(5—1+1—2+9)mod9=3
对于每一特定的行,使用的符号字符的簇号由下式计算:4.3.4行指示符号字符
簇号=[(行号1)mod 3]×3
行指示符号字符包括左行指示符号字符(L,)和右行指示符号字符(R,),分别与起始符和终止符相邻接,见图3。行指示符号字符的值(码字)指示四一七条码的行号(i),行数(3~90),数据区中数据符号123
GB/T 17172—1997
字符的列数(1~30)),错误纠正等级(0~8)\)。左行指示符号字符(L)
Li(xi,y)
L2(x2,2)
I.3(x3+v)
L(x4,y)
起始符
Ls(xs,z)
Is(xe,v)
图3左/右行指示符号字符
左行指示符号字符(L,)的值由下式确定:[30x;+y
30x;+v
右行指示符号字符(R,)的值由下式确定30x,+v
30x,+y
L30x,+2
式中:x;=INT[(行号—1)/3]i=1,2,3,90yINTL(行数—1)/3)
z=错误纠正等级×3+(行数一1)mod3v=数据区的列数-1
c,二第i行的簇号
当c;0时
当 c; ==3时
当c,—6时
当c,=0时
当c,=3时
当c;=6时
例:如果一个四一七条码符号为3行、3列,错误纠正等级为1,那么(L1,L2,L2)为(0,5,2)
(R1,R2,R)为(2,0,5)
4.3.5模式结构
右行指示符号字符(R,)
R(x),v)
R2(xz,y)
R;(x3+z)
Rs(xs,y)
Rg(xg+z)
终止符
四一七条码有三种数据压缩模式:文本压缩模式(TC);字节压缩模式(BC),数字压缩模式(NC)。通过应用模式锁定/转移(Latch/shift)码字,可在一个四一七条码符号中应用多种模式表示数据。4.3.5.1模式锁定与模式转移码字模式锁定与模式转换码字用于模式之间的切换,见表2。1)错误纠正等级见4.6.1。
文本压
缩模式
大写字母型子模式
小写字母型子模式
混合型子模式
标点型子模式
字节压缩模式
数字压缩模式
1)见第4.3.5.3。
GB/T 17172—1997
模式切换码字表
模式锁定
901/9241)
模式转移
模式锁定码字用于将当前模式切换为指定的目标模式,该模式切换在下一个切换前一直有效。模式转移码字用于将文本压缩模式(TC)暂时切换为字节压缩模式(BC)。这种切换仅对切换后的第个码字有效,随后的码字又返回到文本压缩模式(TC)的当前子模式。锁定模式可将当前模式切换成任一种模式,包括切换成当前模式,字节压缩模式下不能再用字节模式转移。模式切换结构见图4。
文本压
缩模式
901/924/
字节压
缩模式
4.3.5.2文本压缩模式(TC)
4.3.5.2.1子模式
文本压缩模式包括下列四个子模式:,大写字母型子模式(Alpha)
·小写字母型子模式(Lower Case)·混合型子模式(Mixed)
·标点型子模式(Punctuation)902
901924
-----模式转移
模式锁定
图4模式切换
数字压
缩模式
子模式的设置是为了更有效地表示数据,每种子模式选择了文件中出现频率较高的一组字符组成的字符集。在子模式中,每一个字符对应一个值(0~29),见表3。这样可用一个单独的码字表示一个字符对,表示字符对的码字由下式计算:码字=30×H+L
式中:H、L依次表示字符对中的高位和低位字符值。4.3.5.2.2子模式之间的切换
任何模式到文本压缩模式(TC)的锁定都是到大写字母型子模式的(Alpha)锁定,见图5。在文本压125
GB/T 17172--1997
缩模式中,每一个码字用两个基为30的值表示(范围为0~29)。如果在一个字符串的尾部有奇数个基为30的值,需要用值为29的虚拟字符ps填充最后一个码字。如果在一个字节转移(码字913)之前紧接着应用ps(29)做为一个填充,那么ps则无效。不允许紧跟在一个子模式转移之后的另一个子模式转移或锁定。
表3GLI为0时文本压缩子模式下字符的对应值值
大写字母型
ASCI值
注:HI、ps、m!、al、pl、as 用于子模式切换126
小写字母型
ASCI值
混合型
ASCI值
标点型
ASCI值
4.3.5.3字节压缩模式(BC)
小写字
母型子
GB/T 17172 --1997
大写字
母型子
标点型
子模式
任何模式至文本
模式的锁定(900)
混合型
子模式
-子模式转移
.子模式锁定
II一锁定为小写字母型子模式
ps=转移为标点型子模式
ml=锁定为混合型子模式
al二锁定为大写字母型子模式
pl=锁定为标点型子模式
as-转移为大写字母型子模式
图5描述子模式的切换结构
字节压缩模式通过基256至基900的转换,将字节序列转换为码字序列。对于字节压缩模式,有两个模式锁定(901,924)。当所要表示的字节总数不是6的倍数时,用模式锁定901;当所要表示的字节总数为6的倍数时,用模式锁定924。在应用模式锁定924的情况下,6个字节可通过基256至基900的转换用5个码字表示,从左到右进行转换。
例:一个二位16进制的数据序列01H,02H,03H,04H,05H,06H(H代表十六进制)可表示为一个码字序列924,1,620,89,74,846。因为有6个数据单元,第一个码字选用字节压缩模式锁定码字924,该6个数据字节到5个码字的转换由下式给出:
1×2565+2×2564+3×2563+4×2562+5×256+6=1×900+620×9003+89×9002+74X900+846当所要表示的字节数不是6的倍数时,必须使用模式锁定码字901,前每6个字节的转换方法与上述方法相同,对被6整除所剩余的字节应每个字节对应一个码字,逐字节用码字表示。例:数据序列01H,02H,03H,04H,05H06H,07H,08H,04H共9个字节,可将其转换为码字序列901,1,620,89,74,846,7,8,4表示。其中:第一个码字901为字节数不是6的倍数时的字节模式锁定码字,前6个字节应用基256至900的转移,字节转移方法与上面所述方法相同,剩余的字节07H,08H,04H,每个码字对应一个字节,依次直接表示。模式转移913用于从文本压缩模式(TC)到字节压缩模式(BC)的暂时性转移。4.3.5.4数字压缩模式(NC)
数字压缩模式是指从基10至基900的数据压缩的一种方法。GLI为0时(见4.3.7.3),数字压缩用于数据位数的压缩。数字值的映象见表4。数字压缩模式能把约三个数字位(2.93)用一个码字表示。尽管在任意数字长度下都可应用数字压缩模式,一般推荐当连续的数字位数大于13时用数字压缩模式,否则应用文本压缩模式。127
GB/T 17172-1997
表4数字压缩模式下的数字值映象ASCII值
在数字模式下,将根据下述算法对数字位进行编码:GLIO字符
1)将数字序列从左向右每44位分为一组,最后一组包含的数字位可少于44个。2)对每-组数字;
首先在数字序列前加一位有效数字1(即前导位),然后执行基10至基900的转换。例:数字序列000213298174000的表示。首先,对其进行分组。因它共有15位,故只有一组;其次,在其最左边加1,将得到数字序列1000213298174000;最后,将其转移成基900的码字序列,结果为1,624,434,632,282,200。译码算法与编码算法相反:
1)将每15个码字从左向右分为一组(每15个码字可转换成44个数字位),其最后一组码字可少于15个。
2)对于每一组码字:
先执行基900至基10的转换;
然后去掉前导位1。
对上述实例,因只有6个码字,故仅能分为1组。其转换为:1×9005+624×900+434×9003+632×9002+282×900+200=1000213298174000
去掉前导位1得:0002132981740004.3.6数据编码
数据区中的第一个码字是符号长度值,它表示数据码字(包括符号长度码字)的个数。模式结构的应用从第二个码字开始。文本模式的大写字母型子模式和GLI0(见4.3.7.3)译解对每一符号的起始时有效;在符号中,其模式可按本章给出的模式锁定或模式转移码字进行切换,GLI可按4.3.7进行切换。4.3.6.1在文本压缩模式中,每一码字由表3中的两个基为30的值表示,计算方法见4.3.5.2.1.。例:字符串\Ad:102\可以编为字符序列A,l,d,ml,:,1,0,2.其中:11为小写字母型子模式锁定ml为混合型子模式锁定。
从表3可得,这些字符所对应的值为(0,27,3,28,14,1,0,2)。可分组为(0,27),(3,28),(14,1),(0,2)。根据上述公式,符号字符值计算如下:(0×30+27,3×30+28,14×30+1,0×30+2)=(27,118,421,2)其结果6个字符通过子模式切换机制用4个码字来表示。4.3.6.2通过应用锁定和转移的不同压缩,可用不同的码字序列表示同一个数据字符串。例:输入(-个 4个字符的ASCI串)
128
GB/T 17172—1997
输出(序列 1):()(<913>)())()(序列 2):(<901>)()()()()相对应的码字为:
序列1:819,913,6,466
序列2901,106,6,112,113
序列1是先从小写字母型文本子模式转移到字节压缩模式,然后又返回到小写字母型文本子模式;序列2是仅应用字节压缩模式。
4.3.6.3四一七条码符号的形状为矩形,当码字的总数不能正好填充一个矩阵时,用码字900作为虚拟码字填充。虚拟码字填充必须放在可选的宏四一七条码控制模块和错误纠正码字之前。4.3.7全球标记标识符(GLI)
全球标记标识符的表示形式为GLIy,y的取值范围为0~811799。在符号中,用相应的码字序列来表示并激活一组解释,这组解释对由数据压缩模式表示的数据流赋予一定的含义,直至下一个(I.I,否则在符号结束之前一直有效。
4.3.7.1GLI值及码字序列
当y为0~899时,对应的码字序列为:927,G1(G1=y);当y为900~810899时,对应的码字序列为:926,G2,G3[(G2十1)×900+G3=y];当y为810900~811799时,对应的码字序列为:925,G4(810900+G4==y),以上G1,G2,G3,G4为0~899之间的码字。4.3.7.2 GLI 应用
GL10~GLI899用于国际字符集;GLI900~~GLI810899用于通用目的;GL1810900~GLI811799用于用户自定义。在一个四一七条码符号中可应用多重GLI。4.3.7.3GLI0(缺省的GLI)
四一七条码符号缺省的GLI值为0。在起始位置,不需要GLI码字序列来激活这种缺省解释;如果当前的GLI值不为0,并希望使用GLI0解释,那么可使用码字序列927,0将其转换为缺省解释。当GLI值为0时,字节值的解释由表5给出。4. 3.7. 4GLI 1
GLI1分配给GB/T15273.1中所规定的字符集。4.3.8阅读器初始化指示符
码字921用于对阅读器的初始化或编程,它必须紧跟在符号长度码字之后放置。当用宏四一七条码对阅读器初始化时,在每一个符号中均须设置码字921,包含在一个初始化符号或符号序列中的数据不通过阅读器输出。4.4起始符和终止符
四一七条码的起始符和终止符是唯一的。自左向右由条开始,起始符的条、空组合序列为81111113,终止符的条、空组合序列为711311121。4.5空白区
空白区位于起始符之前,终止符之后,第一行之上,最后一行之下。空白区最小宽度为2个模块宽。
4.6错误检测与纠正
每-一个四一七条码符号至少包含两个错误纠正码字,用于符号的错误检测与纠正。4.6.1错误纠正等级
四一七条码的错误纠正等级可由用户选择。每种错误纠正等级所对应的错误纠正码字数目见表6。129
4.6.2错误纠正容量
GB/T 17172—1997
对于一个给定的错误纠正等级,其错误纠正容量由下式确定:e+2td—2=2s+1-2
式中:e拒读错误数目,
t—替代错误数目;
错误纠正等级;
d-——错误纠正码字数。
表5GLI0字符集的十进制值
值字符
值字符
值字符
值字符
值字符
值字符
错误纠正码字的总数为2\+1。其中,两个用于错误检测;其余的错误纠正码字用于错误纠正。用一个错误纠正码字恢复一个拒读错误用两个错误纠正码字纠正一个替代错误。当被纠正的替代错误数目小-于4时(s一0除外),错误纠正容量由下式确定:e+ 2t≤d 3
GB/T 17172—1997
例:一个错误纠正等级为3的四一七条码符号能纠正13个拒读错误或7个替代错误,或者为e和t的各种组合,但必须满足上述纠正容量条件。表6四一七条码的错误纠正等级
错误纠正等级
4.6.3错误检测与错误纠正码字的计算错误纠正码字数目
对于一组给定的数据码字,错误纠正码字根据Reed-Solomon错误控制码算法计算。第一步:建立符号数据多项式
符号数据多项式如下:
d(x) =dn-1x*-1 + d,-2x\-2 + +d,x +d,式中,多项式的系数由数据码字区中的码字组成。其中包括符号长度码字,数据码字,填充码字,宏四一七条码控制块。每一数据码字(d:,i=0.n一2,n1)在四一七条码符号中的排列位置见图6。Lo
图6数据、行标识符及错误纠正
第二步:建立纠正码字的生成多项式灵个错误纠正码字的生成多项式如下:g(x) =(x -- 3)(x - 32)...(x — 3*)=x* + gx-1x*-1 + ... +gix + goc a-2
式中,为错误纠正码字c,(i一0k一2,k一1)的个数,c;在四一七条码符号中的排列位置见图6。第三步:错误纠正码字的计算
对一组给定的数据码字和一选定的错误纠正等级,错误纠正码字为符号数据多项式d(x)乘以x,然后除以生成多项式g(x),所得余式的各系数的补数。如果ci≥一929,在有限域GF(929)中的负值等于该值的补数;如果c,≤一929,在有限域GF(929)中的负值等于余数(c;/929)的补数。错误纠正码字的计算可通过图7所示的除法电路来实现。第一步:将寄存器b,b,b,初始化为0。第二步:将模加田,模乘,模补定义如下:x@y= (x +y)mod 929
xy = (x × y)mod 929
?x = (929 -- x)mod 929
式中:x、y取值范围为0~928。131
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。