二维码或条形码 (Qbcode)
二维码条形码控件可以用来生成或展示二维码和条形码,开发者可以设置二维码控件或者条形码控件的边框、位置和大小属性。生成二维码时, qbcode 控件能处理文本和二进制数据;生成条形码时,则只能处理文本数据。二维码遵循 QR Code Model 2 标准,支持从 1 到 40 的各种规格,支持 4 种纠错等级和 4 种字符编码模式。默认情况下,二维码的纠错等级设置为最高级。对于条形码,它支持 code128 格式。
用法
创建控件
使用 gui_qbcode_create()
函数创建一个二维码或者条形码控件,具体创建的是二维码控件还是条形码控件,由参数 encodeType
决定。 encodeType
枚举类型如下:
typedef enum
{
QRCODE_ENCODE_TEXT,
QRCODE_ENCODE_BINARY,
BARCODE_ENCODE_TEXT,
} T_QBCODE_ENCODE_TYPE;
设置尺寸和边框
使用 gui_qbcode_config()
函数来设置控件的尺寸和边框。
二维码编码注释
二维码的编码数据默认情况下可以超过最大字节数,这时可以将最大版本修改为 15 ,版本的修改可以参照 文档 。
示例
#include "gui_qbcode.h"
#include "gui_components_init.h"
/* Use the following two macro to checkout qrcode or barcode */
// #define DISPLAY_QRCODE QRCODE_DISPLAY_IMAGE
// #define DISPLAY_QRCODE QRCODE_DISPLAY_SECTION
#define DISPLAY_BARCODE BARCODE_DISPLAY_IMAGE
// #define DISPLAY_BARCODE BARCODE_DISPLAY_SECTION
#define SCREEN_WIDTH (int16_t)gui_get_screen_width()
#define SCREEN_HEIGHT (int16_t)gui_get_screen_height()
static int app_init(void)
{
#ifdef DISPLAY_QRCODE
#define QRCODE_WIDTH 360
#define QRCODE_HEIGHT 360
char *str = "https://www.realtek.com/";
gui_qbcode_t *qrcode = gui_qbcode_create(gui_obj_get_root(),
"qrcode",
SCREEN_WIDTH / 2 - QRCODE_WIDTH / 2,
SCREEN_HEIGHT / 2 - QRCODE_HEIGHT / 2,
QRCODE_WIDTH,
QRCODE_HEIGHT,
DISPLAY_QRCODE,
QRCODE_ENCODE_TEXT);
gui_qbcode_config(qrcode, (uint8_t *)str, strlen(str), 3);
#elif defined(DISPLAY_BARCODE)
#define BARCODE_WIDTH (143 * 3)
#define BARCODE_HEIGHT 143
#define ENCODED_TYPE BARCODE_ENCODE_TEXT
char *str = "1234567890";
gui_qbcode_t *barcode = gui_qbcode_create(gui_obj_get_root(),
"qrcode",
SCREEN_WIDTH / 2 - BARCODE_WIDTH / 2,
SCREEN_HEIGHT / 2 - BARCODE_HEIGHT / 2,
BARCODE_WIDTH,
BARCODE_HEIGHT,
DISPLAY_BARCODE,
ENCODED_TYPE);
gui_qbcode_config(barcode, str, strlen(str) + 1, 10);
#endif
return 0;
}
GUI_INIT_APP_EXPORT(app_init);

二维码

条形码
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
-
qrcode widget structure