论文摘要:条形码是国内外比较常用的二维条码,对其研究具有非常重要的意义。PDF417主要由起始符、终止符、左右行指示符号字符、纠错码字符和数据区符号字符组成。PDF417条码具有较强纠错能力,本文用VC#编写的软件实现了简单的字母、数字和汉字编码,程序包括字符、数字压缩,码字纠错和图像生成,提出了将数据库和数组结合使用的方法,提高了程序的执行效率。实验表明程序能够很好实现编码、打印和纠错能力。
论文关键词:基于,小型,数据库,编码,软件
1引言
条码识别技术是以计算机图像处理、模式识别、光电技术和通信技术为基础的综合技术,是当今最主要的自动识别技术之一。
目前我国使用得较多的是一维条码,但一维条码的容量小,保密性差,只能标识而不能描述产品,在很大程度上依赖于数据库。二维条码具有信息量大、可靠性高、保密防伪等优点,已经逐渐用于通信、物流、身份识别等领域。
作为当今最先进的条码技术之一,PDF417条形码已经广泛用于各种证件、票据的管理、公共安全、物流和图书馆等领域,研究它具有重要的意义。
2PDF417二维条码的结构
2.1PDF417码的码字结构
四一七条码符号是一个多行结构。每行从左到右依次为:左空白区,起始符,左行指示符号字符,1~30个数据符号字符,右行指示符号字符,终止符,右空白区。规定行数为3~90行。条码结构如图1所示。
 
图1PDF417结构图图2符号字符
每一码字符号字符由4个条和4个空构成,从左向右开始。每一个条或空包含1~6个模块。在一个符号字符中,4个条和4个空总模块数为17,如图2所示。
2.2符号字符的簇
四一七条码符号字符集由0,3,6这三个簇构成,每一簇包括以不同的条、空形式表示的所有929个条码的码字。在每一簇中,每一符号字符所对应唯一的码字,起范围为0~928。第一、二、三行分别使用第0、3、6簇的符号字符,第四行使用第0簇的符号字符,以此类推。行号由上向下递增,最上一行行号为1。
2.3行指示符号字符
行指示符号字符包括左、右行指示符号字符( )。
簇号和指示符的计算方法见文献 。
3PDF417编码
3.1压缩模式
PDF417码有三种数据压缩模式,包括文本压缩、数字压缩和字节压缩。
3.2PDF417编码
首先通过基于VC#对话框界面中的编辑框录入信息,将录入的字符串放入name数组中保存起来。对name数组进行第一次压缩编码,存入数组strfencode中,默认为文本压缩模式,信息录入后被放入数组name中,根据每个数组元素的字符类型不同压缩编码方式有所不同,可以查询到不同输入字符所对应的码值。这里,处理方法是将大写字母、小写字母分别放在数组TC_LOWCHAR和TC_UPCHAR中,按字母表顺序依次存放,在输入姓名信息后在字母数组TC_LOWCHAR或TC_UPCHAR中搜索和name[i]相同的元素,然后记录其在数组TC_LOWCHAR或TC_UPCHAR中对应的位置j。一次压缩编码的值就为TC_DATA[j],并将此值存入strencode[k]中。
如果输入状态有变化那么要加转移码字II(大写字母子模式转换成小写字母子模式)或as(小写字母子模式转换成大写字母子模式),二者值均为27。判断后将值存入strfencode[k++]中。如果输入为空格,那么码字值为固定值32。例如输入信息“XiaoLei”,得到的第一次编码值strfencode=“900,23,27,8,0,14,32,11,27,4,8”。
再根据文本压缩模式的原理,从第一个码字开始,将strfencode的元素两两组合够成一个字符,然后用“ ”来计算出二次压缩编码的数值,并存入数组m_ncode中,二次压缩编码流程如图3所示。

图3二次文本压缩流程图
二次编码得到的结果为“900,717,240,452,357,128”。
一般连续数字个数超过13则采用数字压缩模式。数字压缩模式的核心算法是10进制向900进制的转换,如果直接进行转换,会导致溢出,出现负数的结果,本文采用的办法时将其转化为字符串数组后再进行压缩。由于文字叙述较为繁琐,本文给出了数字压缩模式的流程,如图4所示。

图4数字压缩模式流程图
我们最常用的汉字所采用的是字节压缩模式。我国国家标准规定汉字用内码(Unicode)表示,每个内码占用两个字节,每个字节只用7位,若连续两个字节的最高位为1,则该字符为汉字。
字节压缩主要是通过基256至基900的转换,将字节序列转换为码字序列。当所要表示的字节总数不是6的倍数时,采用模式901;当所要表示的字节总数为6的倍数时,用模式锁定924。字节压缩流程如图5所示。

图5字节压缩流程图
二维条码之所以性能强于一维条码的原因还在于引入了纠错码字。PDAF417码的错误纠正码字总共有9个等级,对于一个给定的错误纠正等级,其错误纠正容量由(1)式决定。
(1)
其中, 为拒读错误, 为替代错误, 为错误纠正等级, 为错误纠正码字数。根据错误纠正容量计算式可知,当错误纠正等级为0时,错误纠正码字数为2;当错误纠正等级为8时,错误纠正码字数为512。
根据纠错码表达式 ,包括符号数据多项式和生成多项式。 1/2 1 2 下一页 尾页 |