纠错码字的生成首先要建立符号数据多项式,系数由数据码字区的码字组成,符号数据多项式如(3)所示。
(2)
生成多项式如(7)所示。

(3)
对于一组给定的数据码字和选定的错误纠正等级,错误纠正码字为符号数据多项式 乘以 ,然后除以生成多项式 ,所得余式的各项系数的补数。但是多项式系数在错误纠正等级越高的时候,其计算量越来越大,对于程序来讲这是很不利的。我们发现由于生成码字多项式的系数和数据码字没有关系,大约有1000个数左右,可以事先通过计算将其所有的系数算出来,把9个纠错等级的系数放在9个数组当中,这就可以很方便地利用类似查表的办法得到所有的纠错码字多项式系数,所得余式的各系数的补数得到纠错码 , 的大小由选择的纠错等级决定。
经过文本压缩后的字符串为“717,240,452,357,128”,考虑到本文只是阐述编码,只说明纠错码的生成方式,所以选择纠错等级为1,输出的纠错码为“835,7,880,388”。
我们得到的这些数据还不能保证后面绘制的图像是一个工整的长方形,就需要在码字数组中适当加入少量空白码字,通常选择900作为空白码进行填充。
4PDF417码图形产生
符号字符的查询常用的办法仍然是采用数组,而在这里应用了一个小型的数据库。这个数据库并不是用来存储汉字,字母和数字信息的,而是将符号字符-码字集放在其中,之所以选择数据库的原因是方便码字或符号字符出错时容易找到并及时修改。创建一张ACCESS的表格,包括三组关键词:“簇号”、“码字”和“bsbsbsbs”(条空符号字符)。根据簇号选择每一行码字和其应该对应的条空符号字符,利用ADO.NET连接程序和数据库。
在绘图时必须要知道条空对应的模块宽度,确定条与空的相对位置,而查询到的符号字符是每8个字符为一组的字符串,并不是以单个字符为元素的数组,本文将字符串数组进行了转换。
绘图选择了GDI+的PEN类进行绘制,GDI+比GDI进步的地方是用PEN类绘制条码图像进行放大的时候边缘部分并不会产生毛刺,这在后面对条码进行识别的时候会减小一些困难。如符号字符为“22411322”,表示2个模块(条),2个模块(空),4个条,1个空…符号字符在字符数组中的位置序号能被2整除的为“条”,否则为“空”。再将单个字符转换为整数形式获得条或空的宽度并进行绘制。通常取的单位模块高与宽的比为3:1。
图6为本文所写的编码软件。例如,在空白处输入信息“卿晓雷loveJordan23”,点击“运行程序”,在图中所示位置产生了相应的PDF417条形码,该条码包含了汉字,字母和数字。软件最下方是一个符号字符-码字集的对照表,便于在数据出现错误的时候及时进行改正。

图6PDF417编码软件
最后图形可以BMP的形式保存在电脑中,方便打印。
5结束语
本文阐述了PDF417码的结构,压缩模式和纠错码字,实现了编码及条码的绘制,本文的创新点是把数组和小型数据库结合使用,使码字和纠错码生成多项式的查找更方便,提高了软件执行效率,结果表明生成条码的正确性,并可以移植和打印,用于日常生活中。
参考文献
1 中华人民共和国国家标准四一七条码GB/T17172-1997[S]. 北京:国家技术监督局,1998.
2 党春,段汕. PDF417条码编码算法的研究与实现[J]. 计算机工程与科学,2007, Vol.29, No. 4, 78-80.
3 戴扬,于盛林. 二维条形码编码与译码的计算机实现[J]. 数据采集与处理. 2003, Vol.18, No.3, 356-360.
4 郑河荣等. 基于Reed-Solomon算法的PDF417码纠错研究[J]. 计算机工程与设计. 2004, Vol.25, No.11, 1897-1899.
5 Robert B.Johnston and Alvin Khin Choy Yap, ”Electronic Data Interchange using Two Dimensional Bar, Code”, HICSS(4)1998: 83-91. 2/2 首页 上一页 1 2 |