|
|
电话联系: |
021-60706467 |
|
|
|
|
|
|
|
|
二维条码的编码、生成 |
|
2007-12-26 |
【摘 要】普通的一维条码已广泛应用到工业、商业、国防部门、交通运输、金融、医疗卫生、邮电及办公室自动化等领域,但是一维条码在很多方面具有很大缺陷。二维条码弥补了这些缺陷,但国内二维条码技术的发展现状比较落后,二维条码技术有待进一步发展。 本文介绍了基本的条码知识,以及一些数据压缩与校验的算法,阐述了二维条码的相关概念和编码过程,以及。本文重点在于二维条码编码的编程实现。在众多的结构化语言中,本文选用了Object Pascal语言,在Delphi 6.0开发环境下进行编程。对于在二维条码编程过程中比较经典的算法,本文中介绍得较为详细,并附有源程序说明其编码方法。 【关键词】二维条码、PDF417、压缩模式、全球标记标识符、数字压缩模式、校验码
1.引言 普通的一维条码自本世纪70年代初期问世以来,很快得到了普及并广泛应用到工业、商业、国防部门、交通运输、金融、医疗卫生、邮电及办公室自动化等领域。但一维条码只能在一维方向表示数据,因此信息容量小,并且保密性、可靠性较低。 由于一维条码的局限性,人们迫切希望发明一种新的条码,除具有普通条码的优点外,同时具有信息容量大、可靠性高、保密防伪性强、易于制作、成本低等优点。二维条码应运而生,由于其优越性,其将在不久的将来取代一维条码,得到广泛的应用。PDF417条码是美国Symbol公司经过几年的努力,于1991年正式推出的二维条码,意即“便携式数据文件(Portable Data File)”。 同时我们也要看到,我国的二维条码的发展现状比较落后,二维条码技术在我国的应用几乎空白。并且在国内,探讨二维条码编码、读码技术的文献、网站、书籍还比较少,二维条码相关设备(如读码器)的生产量较低。不过二维条码的应用是发展的必然趋势,二维条码的普及,也有望在几年内实现。因此,在国内,本研究课题还具有一定的前瞻性。
2.设计要求 功能:接受用户输入的数据,包括字母、数字、标点、特殊字符、汉字、不可见字符等。在程序内部,通过PDF417编码的标准,选择不同的压缩模式对数据进行压缩,并转换成码字。最后将码字转换成图形输出。 要求:1>.在转换过程中,保证码字转换的准确性。 2>.保证其自校验功能,能够在数据损毁的情况下能安全恢复数据。 3>.有友好的图形界面,用户能方便操作。 4>.程序还应有导出、导入编码、帮助等附加功能。
3.PDF417码的相关知识 在本论文中,详细介绍了PDF417码的相关概念、基本定义等,以及PDF417码的各部分的编码原则和方法。有关PDF417码的相关概念、基本定义和编码方法,严格按照国家颁布的《PDF417规范》。介绍了符号字符、码字、簇、全球标记标识符GLI、码字集、拒读错误等相关概念。 四一七条码符号是一个多行结构。符号的顶部和底部为空白区。上下空白区之间是多行结构。每行数据符号字符数相同,行与行左右对齐直接衔接。其最小行数为3,最大行数为90。四一七条码有三种数据压缩模式:文本压缩模式(TC)、字节压缩模式(BC)、数字压缩模式(NC)。每种压缩模式有不同的适用范围和压缩方法。在一个四一七条码中,可以应用多种模式表示数据。使用模式锁定码字或模式转移码字在三种不同模式之间转换。模式锁定与模式转移是两种不同概念。模式锁定是将当前模式切换为指定模式,该切换在下一个切换前有效。模式转移是将当前模式暂时切换到目标模式,该切换仅对切换后的第一个码字有效。
4.程序框架 为实现程序的结构化和模块化,把在四一七条码编码过程中相对独立的功能看作一个模块,并设计程序框图如下:
5.程序实现 编码过程中,为实现程序的结构化和模块化,把在四一七条码编码过程中相对独立的功能看作一个模块,共有9个模块,分别是:用户界面、数据编码、生成数据码、生成校验码、文本压缩模式、数字压缩模式、字节压缩模式、生成打印矩阵、打印。在其中,对于数字压缩模式、字节压缩模式、生成打印矩阵三个模块,介绍的最为详细。并且介绍了在这三个模块中使用的比较经典的算法,比如对45位的长整数进行除运算、10进制转900进制等,还有一些在编程中比较常用的好的技巧,比如用缓冲区指针代替字符串作为参数等。对于其他的模块,也作了介绍。 系统使用delphi6开发环境设计用户界面。用一个文本框接受用户输入的数据。有一个“开始编码”按钮,当用75户单击按钮后,数据传入后台的数据编码模块进行编码。编码的码字结果显示在列表框中,图形打印在窗体上。另有一个下拉列表框供用户选择其需要的校验等级。为使其功能完善并便于操作,用户界面还有下拉式菜单,有“新建”、“开始编码”、“导出”、“打印定制”、“打印”、“编码选项”、“帮助”等功能。
6.设计总结和程序演示 在本人的设计中,涉及了多方面的编程知识和许多优秀的编程技巧,以及一些高效率的算法。比如以缓冲区指针代替字符串作参数的技巧,以及10进制转900进制的算法,值得大家探讨。 程序最终通过了调试,实现了所有功能,达到了预期的目标,并且操作简便,界面友好。为了让读者更加对编码过程了解,在本文中还付有一定源程序,以及程序演示的画面。
|
|
|
|
|
|
|
|
|
|