二维码和条形码
二维码条形码控件可以用来生成或展示二维码和条形码,开发者可以设置二维码控件或者条形码控件的边框、位置和大小属性。生成二维码时,qbcode控件能处理文本和二进制数据;生成条形码时,则只能处理文本数据。二维码遵循QR Code Model 2标准,支持从1到40的各种规格,支持4种纠错等级和4种字符编码模式。默认情况下,二维码的纠错等级设置为最高级。对于条形码,它支持code128格式。
用法
创建控件
使用 gui_qbcode_t *gui_qbcode_create(void *parent, const char *name, int16_t x, int16_t y, int16_t w,int16_t h,T_QBCODE_DISPLAY_TYPE type,T_QBCODE_ENCODE_TYPE encodeType) 函数创建一个二维码或者条形码控件,具体创建的是二维码控件还是条形码控件,由参数encodeType
决定。encodeType
枚举类型如下:
typedef enum
{
QRCODE_ENCODE_TEXT,
QRCODE_ENCODE_BINARY,
BARCODE_ENCODE_TEXT,
} T_QBCODE_ENCODE_TYPE;
设置控件的尺寸和边框
使用 void gui_qbcode_config(gui_qbcode_t *qbcode, uint8_t *data, uint32_t data_len, uint8_t border_size) 函数来设置控件的尺寸和边框。
二维码编码注释
二维码的编码数据默认情况下可以超过最大字节数,这时可以将最大版本修改为 15,版本的修改可以参照以下文档:https://www.qrcode.com/zh/about/version.html。
示例
二维码示例
#include "gui_qbcode.h"
#define QRCODE_WIDTH 320
#define QRCODE_HEIGHT 320
#define DISPLAY_TYPE QRCODE_DISPLAY_IMAGE //QRCODE_DISPLAY_SECTION
#define ENCODED_TYPE QRCODE_ENCODE_TEXT // QRCODE_ENCODE_BINARY
char* str = "123455678901234567890123455678901234567890123455678901234567890123455678901234567890123455678901234567890";
gui_qbcode_t * qrcode = gui_qbcode_create(parent,
"qrcode",
454/2 - QRCODE_WIDTH/2,
454/2 - QRCODE_HEIGHT/2,
QRCODE_WIDTH,
QRCODE_HEIGHT,
DISPLAY_TYPE,
ENCODED_TYPE);
gui_qbcode_config(qrcode, str, strlen(str), 3);
条形码示例
#define BARCODE_WIDTH (143 * 3)
#define BARCODE_HEIGHT 143
#define DISPLAY_TYPE BARCODE_DISPLAY_IMAGE //BARCODE_DISPLAY_SECTION
#define ENCODED_TYPE BARCODE_ENCODE_TEXT
char* str = "1234567890";
gui_qbcode_t * qrcode = gui_qbcode_create(parent,
"qrcode",
454/2 - BARCODE_WIDTH/2,
454/2 - BARCODE_HEIGHT/2,
BARCODE_WIDTH,
BARCODE_HEIGHT,
DISPLAY_TYPE,
ENCODED_TYPE);
gui_qbcode_config(qrcode, str, strlen(str) + 1, 10);
API
Enums
Functions
-
gui_qbcode_t *gui_qbcode_create(void *parent, const char *name, int16_t x, int16_t y, int16_t w, int16_t h, T_QBCODE_DISPLAY_TYPE type, T_QBCODE_ENCODE_TYPE encodeType)
Create a qrcode widget.
备注
this function just create a qrcode object, qbcode data and param should be config by gui_qbcode_config() api.
- 参数:
parent – the father widget
filename – this qrcode widget’s name.
x – the X-axis coordinate relative to parent widget
y – the Y-axis coordinate relative to parent widget
w – qrcode image display width including border
h – qrcode image display height including border
type – QRCODE_DISPLAY_SECTION (gui in real-time) or QRCODE_DISPLAY_IMAGE(save in psRAM by default) or BARCODE_DISPLAY_SECTION or BARCODE_DISPLAY_IMAGE.
encodeType – QRCODE_ENCODE_TEXT or QRCODE_ENCODE_BINARY or BARCODE_ENCODE_TEXT supported.
- 返回:
gui_qbcode_t* success, NULL failed.
-
void gui_qbcode_config(gui_qbcode_t *qbcode, uint8_t *data, uint32_t data_len, uint8_t border_size)
config qbcode data and border param for a qbcode object.
- 参数:
qbcode – a qbcode object pointer.
data – input data encoded for qbcode
data_len – input data length for encode data
border_size – qrode border size, can be 1, 2, 3… by qbcode size, default white color border;
- 返回:
null
-
struct gui_qbcode_t
- #include <gui_qbcode.h>
qrcode widget structure