1、ICS 35.040 L 71 道昌中华人民共和国国家标准GB/T 27767-2011 二维条码紧密矩阵码Two-dimensional barcode-Compact matrix code 2011-12-30发布2012-05-01实施数码!坊f)j中华人民共和国国家质量监督检验检茂总局中国国家标准化管理委员会发布GB/T 27767-2011 目次前言.1 引言. II 1 范围-2 规范性引用文件3 术语、定义、缩略语和约定4 符号描述.35 符号结构.46 符号生成.67 符号印制.228 符号质量229 译码过程.23 附录A(规范性附录)码宇分块参数C语言源代码24附录B(资
2、料性附录)位流长度的优化26附录C(资料性附录)CM码符号印制的用户导则32附录D(规范性附录)纠错生成多项式33附录E(资料性附录)CM码符号生成示例.36 附录F(规范性附录)CM码专有指标的质量评级要求40附录G(资料性附录)参考译码算法.44 目。吕本标准按照GB/T1. 1-2009给出的规则起草。本标准由中华人民共和国工业和信息化部提出。本标准由全国物品编码标准化技术委员会(SAC/TC287)归口。本标准起草单位:武汉砂感科技有限公司、中国电子技术标准化研究所。本标准主要起草人z张伟、张也平、刘波、张得煌、樊旭JlI。GB/T 27767-20门I G/T 27767-2011
3、引本文件的发布机构提请注意,声明符合本文件时,可能涉及第5章、第6章、第9章相关的专利的使用。本文件的发布机构对于该专利的真实性、有效性和范围元任何立场。该专利持有人已向本文件的发布机构保证,他愿意同任何申请人在合理且元歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案。相关信息可通过以下联系方式获得:专利所有人:武汉砂感科技有限公司地址:武汉市东西湖区吴家山经济开发区金一路武汉砂感光电产业园邮政编码:430040 网址:http:/ 联系人:何柳青联系电话:027-61675589 传真:027-61675592 E-mail: 请注意除上述专利外,本文
4、件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。H GB/T 27767-2011 二维条码紧密矩阵码1 范围本标准规定了紧密矩阵码的符号结构、信息编译码方法、纠错编译码方法、信息排布方法、参考译码算法以及符号质量要求等技术内容。本标准适用于紧密矩阵码的生成与识读。2 规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T 1988 信息技术信息交换用七位编码字符集GB/T 12905 条码术语GB 18030信息技术中文编码字符集GB/T 2370
5、4 信息技术自动识别与数据采集技术二维条码符号印制质量的检验AIM国际技术规范扩展解释:第1部分:识别方案与协议(简称AIMECI规范勺3 术语、定义、缩略语和约定3. 1 术语和定义GB/T 12905中界定的以及下列术语和定义适用于本文件。3. 1. 1 功能图形function pattern 用于表示定位与识别特征的图形,包括开始图形、结束图形、数据段分隔图形和定位孔图形。3. 1. 2 开始图形start pattern 用于表示符号开始的图形。3. 1. 3 结束图形stop pattern 用于表示符号结束的图形。3. 1. 4 定位孔图形positioning-hole pat
6、tern 用于表示CM码列同步信息的图形。3. 1. 5 数据段分隔图形data-segment separating pattern 用于将编码区域进行分隔的图形。3. 1.6 掩模masking 为使符号中深色(低反射率)模块与浅色(高反射率)模块的分布均衡,并使符号编码区域中出现功G/T 27767-2011 能图形的可能性降为最低,用掩模图形与数据编码区域的图形进行异或处理。3. 1. 7 版本version 用于指示CM码高度方向模块数的参数。3. 1. 8 纠错等级error correction level 指明CM码中纠错码字所占比例的参数。3. 1.9 格式信息format
7、information CM码符号相关的参数信息。CM码的格式信息包括2数据段编号、数据段总数、纠错等级、掩模类型和码字交错标志。3. 1. 10 格式信息区域format information area 用于对格式信息及其纠错信息进行编码的区域,位于每个数据段开始的连续7个码字区域。3. 1. 11 数据编码区域data encoding area 用于对数据码字及其纠错信息进行编码的区域。3. 1. 12 编码区域ending area 由格式信息区域和数据编码区域组成的区域。3. 1. 13 数据段data-segment 相邻的两个数据段分隔图形之间的编码区域。3. 1. 14 纠错
8、块error correction codeword block 对码字分组后用于纠错的一组码字。3. 1. 15 填充位padding bit 用于填充数据位流最后一个码字后面容量的元含义位,其值为003. 1. 16 填充码字padding codeword 当数据码字和纠错码字不能填满CM码的容量时,用于填充CM码的剩余容量的码字。填充码字不表示有效数据,但参与Reed-Solomon纠错运算。3. 1. 17 功能码function code 用于指示属于特定应用或特定功能的CM码符号的代码。3.2 缩暗语下列缩略语造用于本文件:ABS 绝对值CAbsoluteValue) CM码一紧
9、密矩阵码CCompactMatrix Code) DIV 整除运算CDivision)ECI一一一扩展解释CExtendedChannel Interpretation) 9 GB/T 27767-2011 FNC一一功能码CFunctionCode) GF一一伽罗瓦有限域CGalois Field) 3.3 约定下列表示适用于本文件:(hlN-表示括号中的内容使用二进制表示()HEX二一表示括号中的内容使用十六进制表示4 符号描述4. 1 基本特征4. 1. 1 可编码信息CM码可编码以下信息:a) 数字字符(数字09,GB/T1988中值48至57);b) 大写字母(字母AZ,GB/T19
10、88中值65至90);c) 小写字母(字母az,GB/T1988中值97至122);d) 汉字字符CGB18030); e) 8位字节型数据。4. 1.2 数据表示法深色单元模块表示二进制1,浅色单元模块表示二进制0。4. 1. 3 符号规格CM码有32个可选版本,每个版本可采用1到32个数据段,共有32X32种规格,符号规格从39X18模块到1093X 483模块(这里符号的开始图形和结束图形的宽度均以2模块宽度计算,见5.3和5.的。符号每增加一个版本,高度方向增加15个模块z符号每增加一个数据段,宽度方向增加34个模块。4. 1. 4 符号容量使用最低纠错等级的最大版本、最多数据段的CM
11、码的容量如下:a) 138 462个数字;b) 92 311个大写字母;c) 92 311个小写字母;d) 76 925个数字字母混合字符;c) 35 503个GB18030双字节1区或双字节2区内的字符,或28843个GB18030双字节字符,或14421个GB18030四字节字符;f) 57 686个宇节。4. 1. 5 纠错等级8个纠错等级,每级中纠错码字占总码字的比例为:a) 1级:8%;b) 2级:16%;c) 3级:24%; 3 G/T 27767-2011 d) 4级:32%; e) 5级:40%;f) 6级:48%;g) 7级:56%; h) 8级:64%。纠错码字的个数为总码
12、字个数的上述百分比(向下舍入)。当CM码的总码字数大于511时,需要将码字分割成多个纠错块,在每个纠错块内分别分配纠错码字。码字的分块和纠错码字的分配方法见6.6.2和附录A。4.2 附加特征4.2.1 结构链接允许用不多于16个的CM码在逻辑上连续地表示数据文件。在多顺序扫描状态下应保持原始顺序与数据正确连接。4.2.2 掩模使符号中深色模块与浅色模块均匀分布,同时使符号编码区域中出现功能图形的可能性降为最低。4.2.3 支持ECI协议ECI协议(见AIMECI规范)使CM码可以表示缺省字符集以外的字符(如阿拉伯字符、古斯拉夫字符、希腊字符等),及其他数据解释(如用一定的压缩方式表示的数据)
13、,或者具体应用的编码要求。5 符号结构5. 1 概述每个CM码ffl矩形模块组成的矩形阵列构成,它由编码区域和功能区域组成,功能区域包括开始图形、结束图形、数据段分隔图形以及定位孔图形。数据段分隔图形和定位孔图形存在交叉,交叉部分既作为数据段分隔图形的一部分,也作为定位孔图形的一部分。功能区域不用于数据编码。符号的四周为空白区。图1是以版本2且2个数据段的CM码为例的结构图。开始图形定位孔图形数据段分隔图形数据段结束图形空白区图1符号结构图A GB/T 27767-2011 CM码被设计用于接触式扫描解码,扫描时应使扫描线平行于数据段分隔图形,从CM码的一侧(开始图形或结束图形)往另一侧进行扫
14、描。5.2 版本和数据段CM码有32个可选版本(l32),每个版本有32个可选数据段。32)。规定图1的水平方向为CM码的宽度方向,竖直方向为CM码的高度方向。CM码高度方向的模块数为15XV+3个,V为CM码的版本;宽度方向的模块数为34XS+1+H+T,S为CM码的数据段个数,H为开始图形的宽度,T为结束图形的宽度,见5.3和5.40图2为版本和数据段个数变化示意图。1个数据段2个数据段版本33个数据段图2符号的版本和数据段样图5.3 开始图形开始图形用于指示符号的开始,其宽度方向的模块数大于或等于2,较多的模块数能提高开始图形被探测到的可能性。开始图形的高度方向由15个深色模块和浅色模块
15、按照3:2:1:1:1:2:2:3的序列重复排列而戚,重复的次数与版本数相等,最后以3个深色模块结束。图3为版本3的CM码的开始图形顺时针旋转90。后的结构图。图3符号的开始图形5 GB/T 27767-2011 5.4 结束图形结束图形用于指示符号的结束,其宽度方向的模块数大于或等于2,较多的模块数能提高结束图形被探测到的可能性。结束图形的高度方向由15个深色模块和浅色模块按照3:1:2:3:2:2:1:1的序列重复排列而成,重复的次数与版本数相等,最后以3个深色模块结束。图4为版本3的CM码的结束图形顺时针旋转90。后的结构图。图4符号的结束图形5.5 数据段分隔图形数据段分隔图形宽度为一
16、个模块,全部由深色模块组成,其作用是将编码区域分隔成多个数据段,见图105.6 定位孔图形定位孔图形包括上下两条齿孔状的图形。每条定位孔图形高度为3个模块,上下两行由深色模块组成,中间一行由浅色模块和深色模块交替排列组成,见图1。5. 7 数据段每个CM码有1个或者多个数据段,每个数据段由码字对应的图形元缝排列而成,这些码字包括数据码字、纠错码字以及格式信息码字。每个数据段的宽度固定为33个模块,高度为15XV-3个模块,V为符号版本。5.8 空白区空白区为环绕在符号四周的至少6个模块宽的区域,其深浅应与浅色模块相同,见图106 符号生成6. 1 生成过程6 CM码的生成过程包括以下步骤:a)
17、 数据分析:分析输入的数据,确定数据的数据编码模式。对不同的数据类型,CM码采用不同的数据编码模式进行编码,见6.3。每种模式有各自的编码规则。b) 数据编码:将输入数据按照其编码模式对应的编码规则转换为位流。当需要进行模式切换时,在新模式数据编码前输出模式转换码。将编码产生的位流按每9位对应一个码字的方式G/T 27767-20门转换为数据码字流,最后一个码字不足9位时用0填充。c) 纠错编码:将数据码字进行分块(见6.6.2)。对每块码字分别生成纠错码字,并将纠错码字添加到该块数据码字的后面。d) 在矩阵中布置功能图形:将开始图形、结束图形、数据段分隔图形以及定位孔图形排列到矩阵中。e)
18、排列数据码字和纠错码字:将数据码字和纠错码字的图形排列到矩阵中。f) 格式信息:将格式信息及其纠错信息组装成码字填充到符号中。g) 掩模:用4种掩模类型依次对符号进行掩模处理,评估得到的4种结果,选择最优的一种作为掩模结果。6.2 数据分析对输入数据进行类型分析,按类型划分成多个段,使编码得到的位流尽量短。位流长度优化的一种方法参见附录B。6.3 模式指示6.3. 1 模式分类CM码的编码模式分数据编码模式、ECI模式和功能码模式三类,各种模式由确定的模式指示符指示。表1列出了所有的模式指示符。表1模式指示符模式分类模式名称模式指示符说明汉字模式(OOO l)BlN 每个字符用13位二进制进行
19、编码。见6.4.1数字模式(0010)BlN 每3个字符用10位二进制进行编码。见6.4.2小写字母模式(OO l1)slN 每个字符用5位二进制进行编码。见6.4.3数据编码模式大写字母模式(0100)slN 每个字符用5位二进制进行编码。见6.4.4数字字母混合模式(0101)s剧每个字符用6位二进制进行编码。见6.4.5控制字符模式每个字符用6位二进制进行编码。见6.4.6字节模式(0111)slN 每个字符用8位二进制进行编码。见6.4.7ECI模式ECI (1100)slN 见6.4.8(1000)slN 功能码1,GS1应用标识。见6.4.9.1FNC1 (1011 )slN 功能
20、码1,AIM应用标识。见6.4.9.1功能码模式FNC2 (1001)s阳功能码2,结构链接功能。见6.4.9.2FNC3 (1010)slN 功能码3,识读设备初始化数据。见6.4.9.3a只允许从小写字母模式、大写字母模式或数字字母混合模式进行切换(见6.4.6.2和6.5.口。6.3.2 数据编码模式数据编码模式包括汉字模式、数字模式、小写字母模式、大写字母模式、数字字母混合模式、控制宇符模式和字节模式,见表1。7 GB/T 27767-2011 6.3.3 ECI模式ECI模式只能出现在数据的开头或模式结束转换码(见6.5.1)之后。ECI模式的模式指示符之后为ECI任务号,编码方法见
21、6.4.806.3.4 功能码模式功能码分FNC1、FNC2和FNC3三类,其中FNC1包括两种模式指示符,分别对应两种应用标识,见表1。功能码只能在CM码的开头出现。一个CM码使用功能码时,其模式指示符应出现在数据编码位流的前面。一个CM码最多可以使用两个功能码。6.3.5 无效的模式指示符模式指示符(OOOO)BIN、(011 0)s1N、(1101)BIN、(1110)sIN和(111l)BIN表示元效。6.4 数据编码模式6.4. 1 汉字模式6. 4. 1. 1 编码字符可编码字符包括:a) GB 18030双字节1区及双字节2区的字符(即第一宇节值在(Al)HEX至(A9)HEX或
22、(BO)HEX至(F7)HEX之间,且第二字节值在(AO)HEX至(FF)HEX之间的部分); b) 回车换行(GBjT1988中值13、10的组合); c) 数字对00到99;d) 8位字节型数据。注:GB 18030除双字节I区及双字节2区以外的字符不能用汉字模式编码,可用字节模式编码。6.4. 1. 2 编码规则汉字模式采用13位二进制进行编码。当一个GB18030双字节字符第一字节值在(A1)HEX至(A9)HEX之间,且第二字节值在(AO)HEX至(FF)HEX之间时,按式(1)计算该字符的13位编码:N=(Cj一(A1)H口)X (60)HEX + (C2 -(AO)H)( 1 )
23、 式中=N一一字符的13位编码;C-GB 18030编码的第一字节值;C2一-GB18030编码的第二字节值。当一个GB18030双字节字符第一字节值在(BO)HEX至(F7)HEX之间,且第二字节值在(AO)HEX至(FF)HEX之间时,按式(2)计算该字符的13位编码:8 N=(Cj一(BO)HEX+ 9) X (60)HEX + (C2 - (AO)HEX) ( 2 ) 式中:N一一字符的13位编码;C一-GB18030编码的第一宇节值;C2 -GB 18030编码的第二字节值。式(1)及式(2)定义了。至7775之间的编码值,以下方式用于定义7776至8191的编码值:a) 7776赋
24、给回车换行符;GB/T 27767-2011 b) 7777至8032赋给8位字节数据(0至255),用于编码混在汉字信息中的非汉字数据,减小个别非汉字模式的数据嵌在一段汉字中导致的模式转换开销;c) 8033至8132赋给数字对00到四;d) 8160至8165用于实现模式的转换,见6.5.1;e) 编码值8133至8159及编码值8166至8191是无效的。两个编码示例见表20表2汉字编码示例步骤说明例11 输入字符¥ 2 GB 18030编码(A3A4)HEX 代人公式。)或公式(2)(A3)HEX - (Al)HEX) X (60hEX 3 十(A4)HEX - (AOhEX) 4 计
25、算结果(C4)HEX 5 转化为13位二进制值0000011000100 6.4.2 数字模式6.4.2. 1 编码字符可编码字符包括:a) 数字0至9(GB/T1988值4857); b) 空格(GB/T1988值32);c) +(GB/T 1988值43); d) 一(GB/T1988值45); e) . (GB/T 1988值46);f) ,(GB/T 1988值44);g) 回车换行(GB/T1988值13、10的组合)。6.4.2.2 编码规则例2多(B6EO)HEX (B6) HEX - (BO) HEX十的X(60)HEX十(EO)HEX- (AOhEX) (5EOhEX 001
26、0111100000 以连续的三个数字为一组将数据分组,每3个数字采用10位二进制进行编码。遇到非数字字符则将该字符包含到分组中,每组中最多只能有一个非数字字符,多余的非数字宇符不能用数字模式编码。末尾一组不够三个数字用0填充。在输出第一组数字的编码前先输出2位计数器,记录最后一个分组填充的数字个数,译码时根据该计数器丢弃填充数字:a) 00表示没有填充数字;b) 01表示有1个填充数字;c) 10表示有2个填充数字;d) 11为元效编码。编码只有数字字符的组时,按式(3)计算该组的10位编码:式中:N一一数字组的10位编码;D1 -数字组的第一个数字;N = 100D1 + 10Dz十D3.
27、 ( 3 ) 9 GB/T 27767-2011 D2一一数字组的第二个数字;D3一一数字组的第三个数字。当分组中包含非数字字符时,非数字字符出现在分组中的位置有三种情况,分别是(X表示非数字字符):第1位置为XDl D2 D3;第2位置为DlX D2 D3;第3位置为DlD2 X D3 0 同一个非数字字符处在不同的位置有不同的编码,非数字字符在不同位置时的赋码见表3。表3非数字字符赋码表字符在分组中的位置编码(十进制数)1 1000 空格(GB/T1988中值32)2 1001 3 1002 1 1003 +(GB/T 1988中值43)2 1004 3 1005 1 1006 一气GB/
28、T1988中值45)2 1007 3 1008 1 1009 . (GB/T 1988中值46)2 1010 3 1011 1 1012 ,(GB/T 1988中值44)2 1013 3 1011 1 1 015 回车换行(GB/T1988中值13、2 1016 10的组合)3 1017 编码含有非数字字符的分组时,先输出非数字字符的10位二进制编码,然后再按式(3)计算并输出3个数字的10位二进制编码。剩下的编码值1018至1023用于实现模式的转换,见6.5.10示f9lJ: 输入数据:1,234,567.899分组:1,23 4 ,56 编码十进制值:21013 123 1013 456
29、 7.89 1010 789 900 900 转换为二进制:101111110101 0001111011 1111110101 0111001000 1111110010 1100010101 1110000100 6.4.3 小写字母模式6.4.3. 1 编码字符可编码字符27个,包括26个小写英文字母az以及空格(GB/T1988中值32)。10 G/T 27767-2011 6.4.3.2 编码规则小写字母模式采用5位二进制进行编码,按顺序从a到z最后空格递增编码,字母气的编码为(00000)s1N。剩下的5个编码值(11011)BIN至(11111)BIN用于实现模式的转换,见6.5
30、. 1。示1911: 输入数据:b a r 空格c 。d e 编码十进制值:1 。17 26 2 14 3 4 转换为二进制:00001 00000 10001 11010 00010 01110 00011 00100 6.4.4 大写字母模式6.4.4.1 编码字符可编码字符27个,包括26个大写英文字母AZ以及空格(GB/T1988中值32)。6.4.4.2 编码规则大写字母模式采用5位二进制进行编码,按顺序从A到Z最后空格递增编码,字母A的编码为(OOOOO)sIN。剩下的5个编码值(11011)BIN至(1111l)BIN用于实现模式的转换,见6.5.10示例:输入数据:B 编码十进
31、制值:1 A 。R 空格c 17 26 2 。D E 14 3 4 转换为二进制:00001 00000 10001 11010 00010 01110 00011 00100 6.4.5 数字字母混合模式6.4.5. 1 编码字符可编码字符63个,包括:a) 数字0至9(GB/T1988中值4857); b) 大写英文字母AZ(GB/T1988中值6590); d 小写英文字母az(GB/T1988中值97122); d) 空格(GB/T 1988中值32)。6.4.5.2 编码规则数字字母混合模式采用6位二进制进行编码,按顺序从数字、大写英文字母、小写英文字母最后空格递增编码,数字0的编码
32、为(000000)BIN 0剩下的1个编码值(111111)sIN用于实现模式的转换,见6.5.10示例:输入数据:。A b 空格编码十进制值:。10 37 62 转换为二进制:000000 001010 100101 111110 6.4.6 控制字符模式6.4.6.1 编码字符可编码字符64个,包括除以下字符外的GB/T1988字符:a) 空格气GB/T1988中值32);11 GB/T 27767-2011 b) 数字字符(GB/T1988中值48至57);c) 大写英文字母(GB/T1988中值65至90);d) 小写英文字母(GB/T1988中值97至122);e) DEL(GB/T
33、 1988中值127)。6.4.6.2 编码规则控制字符模式采用6位二进制进行编码,按字符的GB/T1988中的值由小至大顺序编码,第一个字符编码为(OOOOOO)sIN0该模式的数据长度固定为1,编码后自动切换回之前的数据模式。输入数据的第一个字符不能分类为该模式。控制字符编码见表4。表4控制字符编码表字符编码字符编码字符编碍字符编码NUL 。DLE 16 32 F 48 SOH 1 DC1 17 33 51 EOT 4 DC4 20 % 36 ? 52 ENQ 5 NAK 21 & 37 53 ACK 6 SYN 22 , 38 54 一一-BEL 7 ETB 23 39 55 BS 8
34、CAN 24 40 56 HT 9 BM 25 本41 57 LF w SUB 26 + 42 58 一一一VT 11 ESC 27 , 43 50 FF 12 FS 28 44 60 CR 13 GS 29 45 61 SO 14 RS 30 / 46 62 SI 15 US 31 47 63 : 6.4.7 字节模式字节模式采用8位二进制数编码0到255的字节数据。设输入数据的长度为L个字节,则先输出14位二进制元符号数L-1,用于记录字节数,随后直接输出字节数据本身。当输入数据的长度大于16384字节时,将输入数据分割成多个数据段,每段长度不超过16381字节,对每段数据分别编码。从第二
35、段开始的每段数据都需要以模式转换码(Olll)SIN和用14位二进制元符号数编码的该段数据长度开始。12 GB/T 27767-2011 6.4.8 ECI模式6.4.8.1 ECI编码将输入的数据转换为一个位流。以缺省的ECI开始时,位流的开头为第一个数据类型的模式指示符,否则,其前面要有ECI标头,后面为一个或多个不同模式的段。ECI标头由ECI模式指示符Cl100)sIN和ECI任务号组成。ECI的任务号为OOOOOO811799(十进制)之间的6位数。ECI任务号的编码见表5。表5ECI任务号的编码ECI任务号任务号编码000000 - 001023 Obbbbbbbbbb 00102
36、4 - 032767 10bbbbbbbbbbbbbbb 032768 - 811799 11bbbbbbbbbbbbbbbbbbbb 注:bb是ECI任务号的二进制值。ECI模式指示符只能在数据的开头或模式结束转换码(见6.5.1)之后出现。输入的ECI数据需要编码系统作为一系列8位字节的值进行处理,可以采用汉字、数字、小写字母、大写字母、数字字母混合、控制字符、字节等一种或几种模式进行最高效的编码,而不必考虑其实际意义。例如,值为30HEX到39HEX的数据序列可以当作一个数字序列,用数字模式进行编码,即使实际上它并不表示数字数据。示f9!J: ECI编码表示:ECI任务号:400123待
37、编码数据的字节值:(31)HEX (32)IIEX (33)HEX (34)HEX , (35)HEX (36)HEX (37)HEX (38)HEX (39)HEX 0 编码位流:a) ECI模式指示符:1100;b) ECI任务号:1101100001101011111011;0 数据模式指示符(数字):0010;d) 数据编码:00000111101101110010001100010101;e) 最终的位流:11001101100001101011111011 0010000001111011 0111001000 1100010101。6.4.8.2 ECI与结构链接ECI可以在单个
38、CM码或CM码结构链接符号的任意位置出现。引人的任-ECI一直保持有效,直至数据结束或一个新的ECI被引人,ECI将跨结构链接中的两个或多个CM码一直保持有效。6.4.9 功能码模式6.4.9. 1 FNC1 FNC1模式指示符应在CM码的开头编码。结构链接模式同时被应用时,FNC1的模式指示符只在结构链接的第一个符号出现,并且FNC1的模式指示符在FNC2的模式指示符之前。FNC1模式指示符(lOOO)slN用于标识按GS1系统规则格式化信息的符号。FNC1模式指示符(lOll)BIN用于标识按AIM同意的特定行业或者特定应用规范格式化信息的符号。在第一数据字符位置的字符(az,AZ,或两位
39、数字)用于指定特定的应用。13 GB/T 27767-2011 6. 4. 9. 2 FNC2 FNC2功能码用于实现结构链接功能,输入的数据可用最多16个CM码链接起来。每个结构链结中的符号都是由一个4字段(20位)链接控制头开始的:a) 第一字段是4位的FNC2模式指示符(1001)BIN;b) 第二字段是8位的文件签名;c) 第三字段用4位数n表示链接中的CM码总个数为n十1; d) 第四字段用4位数m表示当前CM码在结构链接中的序号。m应小于或等于n,否则该CM码是无效的。文件签名是用某种签名算法对输入的整体数据产生的签名,同一个结构链接中的所有符号的文件签名应相同,防止不同结构链接之
40、间的符号互相串扰。FNC2应是符号中的最后一个功能码,FNC2链接控制头之后应是数据模式指示符或ECI模式指示符。在传输结构链接的符号数据之前,结构链接中的所有符号应全部被解码成功并且将数据还原为正确的顺序。6. 4. 9. 3 FNC3 FNC3功能码用于实现将符号编码的内容用作识读设备的初始化参数。FNC3的模式指示符(1010)sIN应出现在数据编码位流之前。当FNC3和FNC2同时被应用时,FNC3的模式指示符应在FNC2的模式指示符之前,且只在结构链接的第一个符号出现。FNC3不能与FNC1同时使用。6.5 混合模式编码6.5.1 编码模式转换数据编码时的模式转换是通过输出模式转换码
41、来实现的,不是任何两个模式都可以转换的。表6列出了全部的模式转换码,括号中是模式转换码的二进制位数。表6数据模式转换码下一编码模式当前编码模式数字字母控制字符模式结束汉字数字小写字母大写字母混合(切换字节8 160 8 161 8 162 8 163 8 164 8 165 汉字* * (13位(13位(13位)(13位)(13位)(13位1 018 1 019 1 020 1 021 1 022 1 023 数字* * (10位)(10位)(10位)(10位)(10位)(10位27 28 29 30 124 125 126 小写字母* (5位)(5位)(5位)(5位(7位)(7位)(7位)2
42、7 28 29 30 124 125 126 大写字母* (5位)(5位(5位)(5位)(7位Y(7位)(7位)1 008 1 009 1 010 1 011 1 012 1 014 1 015 数字字母混合* (10位(10位(10位)(10位)(10位)(10位(10位)。1 2 3 4 5 7 字节* (4位)(4位(4位)(4位)(4位)(4位(4位)注: * 号表示不允许的模式转换。a小写字母、大写字母模式到数字字母混合、控制字符、字节模式的7位转换码是5位的11111分别加上2位的00,01,10。14 6.5.2 数据编码总流程数据编码流程如下:GB/T 27767-2011 a
43、) 以编码产生的二进制位流最短为目标,将输入数据按类型划分成段。对输入数据的分段进行优化的方法参见附录B。b) 对所有数据段按照下面的步骤逐段编码:1) 存在功能码时,按表1进行编码;2) 当前数据段是第一段时,输出该段数据的模式指示符,见表1; 3) 按照当前数据模式的编码规则编码当前数据段;的下一段数据编码前,首先输出当前模式到下一模式的模式转换码,见表6; 5) 需要编码ECI时,首先输出模式转换码模式结束,见表6,然后编码ECI模式指示符(1100)sIN及ECI任务号(见表日,之后是下一数据段的模式指示符,见表1; 的最后一个数据段完成后,输出模式转换码模式结束飞见表60c) 需要填
44、充位时,最后一个码字填充0。d) 需要填充码字时,第一个填充码字应当取(000000000)BIN。6.6 纠错编码6.6.1 纠错能力CM码采用伽罗瓦有限域GF(29)的Reed-Solomon纠错算法生成纠错码字,有限域的本原多项式为x9+x4+1,码字的位长为9位。纠错码字应添加在数据码字流后。CM码有8个用户可选纠错等级,对应的纠错码字容量见表7。表7纠错码字容量纠错等级纠错码字占总码字百分比(向下舍入)最佳纠错等级的选择需要依据符号质量、识读设备精度以及应用的物理环境相关,在数据密度与可靠性之间做出权衡。附录C.2给出了纠错等级选择的用户导则。纠错码字可以纠正两种类型的错误,拒读错误
45、(错误码字的位置己知)和替代错误(错误码字的位置未知)。可纠正的替代错误数和拒读错误数与纠错码字数和错误检测码字数之间的关系由式(4)给出。式中:E 拒读错误数;t一一替代错误数;d 纠错码字数;-一错误检测码字数。e十2t=d一 ( 4 ) 在一般情况下,=0。当大部分纠错容量用于纠正拒读错误时,则检不出替代错误的概率增加;当拒读错误的总数大于纠错码字总数的一半时,=3;当CM码的纠错码字总数小于6时,只允许纠正替代错误(e=O,=1)。6.6.2 码字的分块与纠错码字的分配运用Reed-Solomon纠错算法生成纠错码字时码宇序列的长度受到所选用有限域的限制,CM码采GB/T 27767-
46、20门用的是GF(29)有限域,码字序列的长度应小于5120当数据码字的个数加上纠错码字的个数大于511时需要将数据码字分割成多个纠错块,然后分别对每个纠错块运用纠错算法生成各自的纠错码字。设CM码的总码字容量为C。将C个码字分成BI个长度为凡的块,以及B2个长度为N2的块,满足式(5)。C=B1 XN1十B2X N2 . ( 5 ) 总分块数B见式(6)。B=(C十510)DIV511 ( 6 ) 当C是B的整数倍时,码字分块参数为:BI=B,凡=CDIV B,B2=0,N2=0。当C不是B的整数倍时,码字分块参数为:N1= (C DIV B) +1 , N2 =N1 -l,B1 =C-BX N2, B2 =B-B1 0 设选定的纠错等级为R(1R8),需要生成的纠错码字总数E见式(7)。E= (C X R X 8)DIV 100 ( 7 ) B个纠错块中,前B3块中每块分配EI个纠错码字,后B4块每块分配E2个纠错码字,分配结果满足式(8)。E = E 1 X B3 + E 2 X B4 B=Bl +B2 =B3 +B4 当E是B的整数倍时,纠错码字分配参数为:B3=B,EI=EDIVB,且=0,E2=0。. ( 8 ) 当E不是B的整数倍时,纠错码字分配参数为:EI= (E DIV B)十1,E2=