资源描述:
《qr码编码的面向对象设计及实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第17卷第4期北京机械工业学院学报Vol.17No.42002年12月JournalofBeijingInstituteofMachineryDec.2002文章编号:1008-1658(2002)04-0006-06QR码编码的面向对象设计及实现黄宏博,佟俐鹃(北京机械工业学院计算机及自动化系,北京100085)摘要:随着信息技术的发展,二维条码技术的应用越来越广泛,QR码作为一种优秀的二维条码,在我国具有特别的发展优势。为了在Windows平台下更容易地进行条码应用的开发,分析了QR码的编码原理及生成方法,用面向对象的方法
2、设计了一个Cgg类,实现了QR码的编码、纠错、生成及绘图等功能。经过测试,可良好地运行。关键词:QR码;面向对象程序设计;纠错编码中图分类号:TP391.1文献标识码:A由于一维条码具有信息采集速度快、准确度高、成本低、可靠性强等优点,因此在各行业中得到了广泛的应用。但随着应用领域的不断扩展,传统一维条码信息量小、表示信息范围窄等等的缺点也逐渐暴露出来。二维条码的诞生解决了一维条码不能解决的问题,它能够在横向和纵向2个方向同时表示信息,不仅能在很小的面积内表达大量的信息,而且能够表示汉字和存储图像。二维条码的出现拓展了条码的应
3、用领域,因此它的应用会越来越广。QR码是日本Denso公司于1994年9月研制的一种矩阵式二维条码。它具有全方位超高速识读的特性,而且能够有效地表示中国汉字和日本汉字。QR码有40个版本,4个纠错等[1]级,单个符号最大可以容纳1817个字符,最高纠错等级可以纠错约30%的数据码字。QR码的这些特点使得它在我国具有良好的使用前景。本文对QR码的编码和生成过程进行了分析,用VC开发了一个Cgg类CQR,对编码和绘图等功能进行了封装。该类可以在开发条码的应用平台时使用。1类的功能CQR类应该具有对输入的数据,经过编码和纠错,形成对
4、应的二进制位流,然后进行位流排列,图形绘制等功能。对应这些功能,分别设计编码模块,纠错模块,位流排列模块,和绘图模块来进行程序实现。2类的设计类的成员变量包括QR码的系统参数、性能参数、编码和纠错要用的参数,以及绘图参数等等。系统参数包括QR码整体一级的参数,由于需要与外界进行通信,从调用方获取这些收稿日期:2002-07-10项目来源:黑龙江省自然科学基金[F98-01];北京市教委科技发展基金项目[2002KJ-188]作者简介:黄宏博(1976-),男,山东菏泽人,北京机械工业学院计算机及自动化系硕士研究生,主要从事二维
5、条码技术方面的研究。第4期黄宏博等:QR码编码的面向对象设计及实现7值,故把它们设为public型的成员变量。性能参数包括编码位流长度、编码字符数等等,用于给调用方提供QR编码的一些性能方面的信息。编码参数有编码后的数据串和数据位流,都是字符串类型的变量,前者是输入数据经过编码后的原始位流,后者指经过填充后的数据位流。纠错参数是纠错运算过程中需要的参数,绘图参数是指条码的模块排列矩阵,类由成员函数实现所有功能。public://系统参数intmËnModel;//码的模式intmËnVersion;//版本TCHARmËcEC
6、L;//纠错等级intmËnMask;//掩模图形intmËnRotation;//旋转角度CStringmËstrInputData;//输入数据intmËnUnit;//绘图模块大小protected://性能参数longmËlBitsLength;//位流长度longmËlCodedCharactor;//编码字符数//编码参数CStringmËstrCodedData;//编码后的数据串CStringmËstrFinalBitStream;//最终位流//纠错参数......//绘图参数intmËnMetrix[177
7、][177];public:longCodeInputData();//编码输入数据longFillBitStream();//数据位流填充intGeneratorECCode();//生成纠错码longCreateFinalBitStream();//构造信息的最终位流序列voidSetFunctionPattern(intmax);//设置功能图形(包含了数组的初始化)voidAlignCodeWordInMetrix();//在矩阵中布置码字voidDrawPattern(CWnd3pWnd,CPointpoint,in
8、tmax);//绘制图形3类的实现3.1编码QR码的编码字符集包括数字型数据(数字0~9)、字母数据型数据(数字0~9;大写字母A~Z;9个其他字符:space,$,%,3,+,-,.,/,:)、8位字节型数据(ASCII字符集)、中国汉8北京机械工业学院学报第17卷字字符。