张江鹏 杨文 张利军 卢玉
摘 要: 二维码技术应用广泛,但是针对大批量、标签式的二维码应用场景,仍缺乏简单易用、方便快捷的设计与生成系统。文章分析了常用二维码标签生成系统的不足,设计并实现了一套QR Code二维码标签批量生成系统。该系统采用VBA实现标签批量生成功能、采用动态链接库作为二维码生成的编程接口。实验验证结果表明,该系统能够满足生产、经营、管理活动中对大批量、标签式二维码的需求,并具有灵活、便捷、高效等优点。
关键词: 二维码; 动态链接库; QR Code; VBA
中图分类号:TP311 文献标识码:A 文章编号:1006-8228(2022)03-65-05
Abstract: Two-dimensional code technology is widely used, but there is still a lack of easy-to-use, convenient and fast design and generation systems for large-volume, label-type two-dimensional code application scenarios. This paper analyzes the shortcomings of commonly used QR Code label generation systems, and designs and implements a QR Code label batch generation system. The system uses VBA to realize the function of label batch generation, and uses dynamic link library as the programming interface for QR Code generation. Experimental verification results show that the system can meet the demand for large-volume, label-based QR Codes in production, operation, and management activities, and has the advantages of flexibility, convenience, and efficiency.
Key words: two-dimensional code; dynamic link library; QR Code; VBA
0 引言
在当今移动互联网时代,二维码技术在各类生产经营、日常生活中得到了空前广泛的应用,智能手机的扫一扫功能使得二维码应用更加普遍[1-2]。二维码具有信息量大、可靠性高、使用成本低廉等优点[3-4]。QR Code是目前应用最为广泛的二维码类型之一[5]。
当前,二维码主要有两大类应用场景。
第一类是在日常生活中作为特定信息标识、供个人使用的各类单个式二维码应用场景。在该类场景中,二维码一般由特定的应用软件进行生成、识别、解析,同时由于是单个式二维码,一些在线式的二维码生成系统也能简便、快捷地满足个人使用需求。例如,微信、支付宝的收款码、付款码均可分别由微信、支付宝APP进行生成、识别。
第二类是在生产、经营、管理等活动中作为设备、物资标签的大批量、标签式二维码应用场景[6,7]。在该类场景中,标签具有样式设计的需求,二维码一般只是作为标签中的一项组成元素;同时还具有大批量生成的需求,一般需要针对具有相同数据格式的不同数据内容,生成大批量的标签。
针对第二类应用场景,本文通过分析当前常用二维码标签生成系统现状,发现目前仍缺乏简单易用、方便快捷、適用性强的二维码标签设计与生成系统。
为此,本文采用Excel作为标签样式设计器、采用VBA(Visual Basic for Applications)实现批量生成功能,设计并实现了一套二维码标签生成系统。通过测试验证,该系统能够满足大批量、样式灵活的二维码标签设计与生成需求。
1 二维码标签生成系统现状
当前常见的二维码标签生成系统主要分为在线式和离线式两大类。
在线式二维码标签生成系统,以Web网页形式提供二维码标签生成服务,其主要优点在于可以直接使用浏览器进行操作,无需安装额外的平台或工具,使用简便。一些网络应用软件也具有生成二维码的功能(例如在微信中生成收款码),但它们是针对特定信息内容生成特定样式的二维码,并不能作为一般的二维码标签生成系统。
常见的离线式二维码标签生成系统有两种形式:一种是独立的应用软件形式(如exe、apk程序),另一种是Office应用软件的加载项形式(如OCX控件等)。这两种形式一般均需进行安装部署。
以上两类二维码标签生成系统,根据具体系统设计与实现的不同,在功能灵活性、使用便捷性等方面均有差异,但针对前述的第二类二维码应用场景(大批量、标签式),总体上均存在以下几项缺点:
⑴ 功能灵活性不足。一些二维码标签生成系统对个别二维码参数进行了缺省设置,使得功能灵活性受到限制。
⑵ 批量生成功能不足。大部分二维码标签生成系统没有批量生成功能;个别虽然具有批量生成功能,但数据接口不灵活,或是存在其他问题。如当前常用的草料网二维码生成器,虽然可以批量生成二维码,但其内容只是该网站的一个网址,需要该网站在线支持才能解析出原始数据内容。
⑶ 二维码标签样式单一。二维码只是二维码标签的一个组成元素,对于二维码标签的设计,重点在于标签样式设计而不是二维码的生成。一般的二维码标签生成系统最多只是内置几类基本的标签样式模板,很难满足灵活多样的二维码标签设计需求。如Microsoft条形码控件MSBCODE9.OCX,只提供了在二维码下方显示编码文本信息这种简单样式。
各类二维码生成系统功能对比详见表1。
2 设计思路与实现
2.1 设计目标
针对常见二维码标签生成系统存在的上述不足,本文以目前应用最广泛的QR Code二维码为例,设计一套二维码标签生成系统,以满足用户对标签式二维码的设计与批量生成需求。
具体目标要求如下:
⑴ 轻量级,安装部署便捷;
⑵ 对QR二维码的纠错等级、符号版本、掩膜方案、模块样式等参数均可灵活地自定义设置;
⑶ 具有比较灵活多样的标签样式设计功能;
⑷ 具有批量生成功能,批量生成功能的数据接口需简单易用。
2.2 设计思路
针对上述要求,计划采用如下设计思路。
⑴ 基于VBA,以Microsoft Office Excel作为二维码标签设计与生成环境。
Excel是一种广泛使用的办公软件;VBA是一种宏语言,内嵌于Office中,提供了面向对象的程序设计方法[8],为用户提供了Office二次开发功能,大大提高了工作效率[9]。
使用Excel+VBA作为二维码标签设计与生成环境,有以下优点。
① 既能满足轻量级、安装部署便捷的目标要求,又能满足常见标签样式的设计需求。
② 数据接口便捷高效。由于Excel本身就是日常广泛使用的数据处理工具,所以不需要设计另外的数据接口。
③ 批量生成功能容易实现。可以使用VBA方便快捷地对Excel进行操作,通过简单的代码就能实现批量生成功能。
⑵ 生成的二维码符号数据采用数组形式,而不是直接采用图片形式。采用数组形式便于在Excel中利用VBA进行编程操作,使二维码标签样式设计功能更加灵活。
⑶ 生成二维码符号的编程接口采用动态链接库实现,避免直接采用VBA编程在编码简易性和运行速度方面的劣势,同时能直接参考一些开源二维码生成程序的源代码。
2.3 系统实现
按照以上思路,本文设计并实现了一个二维码标签生成系统进行示例演示,其功能结构如图1所示。
系统设计简要说明:
⑴ 以Excel作为标签样式设计器以及数据接口,进行标签样式设计和标签数据内容的传递。
⑵ 通过采用VBA设计的用户窗体与用户进行功能交互,进行标签参数设置、调用批量生成功能。
⑶ 根据QR Code二维码编码与符号生成规则(参照GB/T 18284—2000《快速响应矩阵码》),本文使用C++语言编写了用于生成二维码符号的动态链接库QRCben.dll。该动态链接库输出的二维码数据为数组形式,数组元素为字节类型,每个元素对应于二维码的一个模块,具体包含了模块类型(深模块、浅模块)和模块所处区域(寻像图形、分隔符、定位图形、校正图形、格式信息区、版本信息区、码字区)等信息。
⑷ VBA程序通过调用生成二维码符号的动态链接库(QRCben.dll),获得数组形式的二维码符号数据;根据获得的二维码符号各个模块的类型与所处区域信息,自定义不同区域模块的图案、生成二维码符号图形,并添加到Excel设计的标签样式的相应位置处。
3 使用流程与功能验证
下面以某单位装备运维系统中所需的装备管理标签为例,简要说明本文设计并实现的二维码标签生成系统的使用流程,并对使用效果进行验证。
3.1 设计二维码标签样式
在该二维码标签生成系统的Excel文件中利用工作表进行标签的样式设计。主要涉及单元格文字与样式、背景色填充、边框设置、图片插入等功能。图2是设计完成的标签样式示例。
在该示例中,对于标签中的可变字段,采用大括号“{ }”进行标识。在后续的标签生成中,VBA程序將自动把可变字段替换为相应的每个标签的具体内容,从而进行标签的自动批量生成。
3.2 导入数据内容
由于Excel本身就是日常办公中最常用的数据处理工具,因而这里假设数据内容已经导入到了该系统的Excel文件的工作表中,然后只需按照格式要求对数据内容进行简单调整即可。图3是调整后的数据内容示例。
图3中,粗线框中的“装备名称”、“所属单位”等栏与标签样式中采用大括号“{ }”标识的可变字段相对应,在具体生成每个标签时,会自动将对应栏的数据内容替换到标签中的相应字段处。
3.3 设置参数
使用VBA生成的用户窗体作为用户与系统进行功能交互的界面,进行参数设置,图4为设计的功能交互界面示例。
功能交互界面中,参数设置包括源数据、二维码、标签以及输出共四块参数区域。
源数据参数区域中可以设置源数据段数、连接符以及标签数量。图4中的参数设置表示:将数据内容中的前四个源数据段用换行符连接,作为二维码的源数据,分别生成100个标签。
二维码参数区域中可以设置二维码的纠错等级、掩膜方案、符号版本以及模块图案。
标签参数区域用于设置工作表中标签的区域范围以及标签中二维码的区域范围。
输出参数区域用于设置生成标签的图片格式、大小等。
3.4 批量生成及功能验证
按照上述流程完成标签设计、数据导入以及参数设置后,就可以批量生成二维码标签了。具体测试验证方法见表2。
首先点击用户窗体中的“逐个生成”按钮,生成第一个标签,检查是否存在错误。图5为生成的第一个标签。
经检查,生成的第一个标签信息内容正确,二维码能正确识别。
接下来点击用户窗体中的“批量生成”按钮,生成全部的100个标签。经测试,程序运行总用时约36s,即平均生成一个标签用时约为0.36s。对生成的二维码标签图片进行检查、识别,100个标签均信息正确、二维码识别内容无误,如图6所示。
4 结束語
以上使用流程、操作方法示例及功能验证结果表明,本文采用设计并实现的二维码标签生成系统,能满足前述第二类二维码应用场景即生产、经营、管理活动中大批量、标签式二维码设计与生成的需求,并具有以下优点:
⑴ 使用Excel作为设计与生成环境,不需要另外安装部署,方便快捷;
⑵ 使用Excel作为标签样式设计器,基本无使用操作门槛,设计功能灵活多样,能够满足常用的标签样式设计需求;
⑶ 使用Excel作为数据接口,数据导入简单便捷;
⑷ 用户自定义设置功能灵活,可以对二维码的纠错等级、掩膜方案、符号版本以及模块图案等进行自定义设置;
⑸ 批量生成功能强大,可以灵活设置可变字段;
⑹ 标签生成速度快,平均生成一个标签用时约为0.36s。
参考文献(References):
[1] 程裕强,刘爱民,等.二维码生成算法研究[J].玉林师范学院学报(自然科学版),2014,35(5):118
[2] 宋涛.基于二维码标签技术的燃气管理物联网系统[J].上海煤气,2020(5):29
[3] 刘宁钟,杨静宇.二维条码的编码理论和设计[J].计算机学报,2007,30(4):686
[4] Villan R, Voloshynovskiy S, Koval O, Pun T .Multilevel 2d barcodes: towards high capacity storage modules for multimedia security and management[J]. IEEE Trans on Information Forensics and Security,2006,1(4):405
[5] 刘宁钟,苏军,等.工业控制环境中QR Code的检测和识别算法[J].电子学报,2011(10):2459
[6] 芦建文,郭闯,等.钢材成品二维码标签系统设计[J].包钢科技,2020,46(3):68
[7] 张雯.基于物联网应用的二维码标签智能化管理系统[D].山东大学信息科学与工程学院硕士学位论文,2018
[8] 伍云辉.精通Excel VBA[M].北京:电子工业出版社,2013
[9] 陈海生,彭峰.Excel VBA在医院基本药物数据统计中的应用[J].中国现代应用药学,2015,32(12):1494
3549501908255