二维码生成
1.1. 二维码概述
二维码也称为二维条码(二维编码),通常广泛使用的是 QR Code。QR 是 Quick Response 的缩写,是近年来在移动设备上非常流行的一种编码方式。与传统条形码(Bar Code)相比,它可以存储更多信息,并能表示更多数据类型。 二维码共有 40 种尺寸,官方称为版本(Version)。Version 1 为 21 x 21 的矩阵,Version 2 为 25 x 25 的矩阵,Version 3 为 29 x 29 的尺寸。版本每增加 1,尺寸就增加 4。计算公式为 (V-1)*4 + 21(V 为版本号)。最大为 Version 40,(40-1)*4+21 = 177,因此最大尺寸为 177 x 177 的正方形。 二维码具有一定的纠错能力,该纠错功能主要通过 Reed-Solomon 纠错算法实现。
二维码的结构:

1.1. 二维码概述 图1
1.2. 快速开始
1.2.1 准备开发环境
如果是第一次阅读本文档,请先阅读《入门指南/准备开发环境/Easy-Eai 编译环境的准备与更新》,并按照其中的步骤搭建编译环境。
在 PC 上的 Ubuntu 系统中执行 run 脚本,进入 EASY-EAI 编译环境。具体如下。
cd ~/develop_environment./run.sh 22041.2.2 下载源码并编译示例
在 EASY-EAI 编译环境下,创建用于管理源码仓库的目录。
cd /optmkdir EASY-EAI-Toolkitcd EASY-EAI-Toolkithttps://dl.dragonwake.com/download/rv1126b/embedded/EASY-EAI-Toolkit-1126B/Demos.zip
从上述链接下载 Demos.zip 压缩文件,并上传到虚拟机的 /opt/EASY-EAI-Toolkit 目录后解压。 进入对应示例的目录,执行编译操作。具体命令如下。
cd EASY-EAI-Toolkit-1126B/Demos/common-qrcode/./build.sh💡 注意:由于依赖库部署在开发板上,因此在交叉编译过程中请务必保持 /mnt 挂载。

1.2.2 下载源码并编译示例 图3
1.2.3 运行示例
通过串口调试或 SSH 调试进入开发板后台,并进入示例所在位置。如下所示。
cd /userdata/Demo/common-qrcode运行示例的命令如下。
./test-QRCode1.2.4 运行结果
运行结果如下所示。
执行测试程序后,会生成一张名为“QRCode.png”的图片。

1.2.4 运行结果 图4
返回【编译窗口】,使用 eog 命令直接打开图片。
eog /mnt/userdata/Demo/common-qrcode/QRCode.png
1.2.4 运行结果 图5
如果 EASY-EAI 编译环境提示找不到 eog 命令,请通过以下操作安装。
sudo apt-get updatesudo apt-get install eog或者,也可以将图片从开发板复制到 PC。
cp /mnt/userdata/Demo/common-qrcode/QRCode.png ./Release关于 API 的详细说明以及 API 调用(本示例的源码),请参考以下说明。
1.3. 二维码生成 API 说明
EASY EAI api 封装了二维码生成工具,只需传入信息即可生成二维码图片,方便用户为自己的应用程序生成二维码图片。
1.3.1 include/引用方法
EASY EAI api 库位于本仓库的 easyeai-api 目录中。为了让用户能够在本地项目中直接调用 EASY EAI api 库,下面列出了项目中需要链接的库、头文件等内容。
| 说明 | CMake 中的写法 | Makefile 中的写法 |
|---|---|---|
| api.cmake | ${common_root}/qrcode/api.cmake | 无 |
| 头文件目录 | ${QRCODE_INCLUDE_DIRS} | -I ../../easyeai-api/common/qrcode |
| 源文件目录 | ${QRCODE_SOURCE_DIRS} | ../../easyeai-api/common/qrcode |
| 库文件目录 | 无 | 无 |
| 库链接参数 | ${QRCODE_LIBS} | 无 |
API 源码路径为: EASY-EAI-Toolkit-1126B/easyeai-api/common/qrcode/ 用户可以通过源码查看接口实现,也可以直接修改源码。
1.3.2 二维码生成操作
二维码生成函数的原型如下。
long StrToQRCode(const char \*file, const char \*pStr);具体说明如下表所示。
| 函数名:StrToQRCode() | 详情 |
|---|---|
| 头文件 | easyeai-api/common/qrencode/qrcode.h |
| 输入参数 | file:生成的二维码图片保存路径(包含目录) 示例:/userdata/myQRCode.png pStr:生成二维码所需的字符串 |
| 返回值 | 成功时返回 0 失败时返回 -1 |
| 注意事项 | 无 |
1.4. 使用示例
二维码操作 API 的使用示例代码路径如下:
EASY-EAI-Toolkit-1126B/Demos/common-qrcode/test-QRCode.c
StrToQRCode(QRCODE_PATH, "hello! my name is EasyEai-api !");