跳转到内容

二维码生成

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.1. 二维码概述 图1

1.2. 快速开始

1.2.1 准备开发环境

如果是第一次阅读本文档,请先阅读《入门指南/准备开发环境/Easy-Eai 编译环境的准备与更新》,并按照其中的步骤搭建编译环境。

在 PC 上的 Ubuntu 系统中执行 run 脚本,进入 EASY-EAI 编译环境。具体如下。

Terminal window
cd ~/develop_environment
./run.sh 2204

1.2.2 下载源码并编译示例

在 EASY-EAI 编译环境下,创建用于管理源码仓库的目录。

Terminal window
cd /opt
mkdir EASY-EAI-Toolkit
cd EASY-EAI-Toolkit

https://dl.dragonwake.com/download/rv1126b/embedded/EASY-EAI-Toolkit-1126B/Demos.zip

从上述链接下载 Demos.zip 压缩文件,并上传到虚拟机的 /opt/EASY-EAI-Toolkit 目录后解压。 进入对应示例的目录,执行编译操作。具体命令如下。

Terminal window
cd EASY-EAI-Toolkit-1126B/Demos/common-qrcode/
./build.sh

💡 注意:由于依赖库部署在开发板上,因此在交叉编译过程中请务必保持 /mnt 挂载。

1.2.2 下载源码并编译示例 图3

1.2.2 下载源码并编译示例 图3

1.2.3 运行示例

通过串口调试或 SSH 调试进入开发板后台,并进入示例所在位置。如下所示。

Terminal window
cd /userdata/Demo/common-qrcode

运行示例的命令如下。

Terminal window
./test-QRCode

1.2.4 运行结果

运行结果如下所示。

执行测试程序后,会生成一张名为“QRCode.png”的图片。

1.2.4 运行结果 图4

1.2.4 运行结果 图4

返回【编译窗口】,使用 eog 命令直接打开图片。

Terminal window
eog /mnt/userdata/Demo/common-qrcode/QRCode.png

1.2.4 运行结果 图5

1.2.4 运行结果 图5

如果 EASY-EAI 编译环境提示找不到 eog 命令,请通过以下操作安装。

Terminal window
sudo apt-get update
sudo apt-get install eog

或者,也可以将图片从开发板复制到 PC。

Terminal window
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 二维码生成操作

二维码生成函数的原型如下。

Terminal window
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

Terminal window
StrToQRCode(QRCODE_PATH, "hello! my name is EasyEai-api !");