指示控件¶
概述¶
指示控件用于以图形化方式展示数值、方向和状态信息,适用于仪表盘、传感器监控、工业控制等嵌入式场景。包括仪表盘、刻度尺、指南针、心率和 LED 指示灯五个控件。
Gauge¶
弧形仪表盘控件,通过弧形进度条和指针显示 0-100 的数值。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化仪表盘 |
|
使用参数初始化 |
|
设置数值(0-100) |
参数宏¶
EGUI_VIEW_GAUGE_PARAMS_INIT(name, x, y, w, h, value);
结构体字段¶
字段 |
类型 |
说明 |
|---|---|---|
|
|
当前值(0-100) |
|
|
弧线宽度 |
|
|
起始角度(默认 150, 约 7 点钟方向) |
|
|
扫过角度(默认 240) |
|
|
背景弧线颜色 |
|
|
进度弧线颜色 |
|
|
指针颜色 |
代码示例¶
static egui_view_gauge_t gauge;
EGUI_VIEW_GAUGE_PARAMS_INIT(gauge_params, 10, 10, 100, 100, 75);
void init_ui(egui_core_t *core)
{
egui_view_gauge_init_with_params(EGUI_VIEW_OF(&gauge), core, &gauge_params);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&gauge));
}
void update_gauge(uint8_t val)
{
egui_view_gauge_set_value(EGUI_VIEW_OF(&gauge), val);
}
Scale¶
刻度尺控件,显示带有主/次刻度线的线性标尺,支持水平和垂直方向,可选数值标签和指示器。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化刻度尺 |
|
使用参数初始化 |
|
设置量程范围 |
|
设置当前值 |
|
设置主/次刻度数量 |
|
设置方向(0=垂直, 1=水平) |
|
设置刻度颜色 |
|
设置标签颜色 |
|
设置指示器颜色 |
|
显示/隐藏数值标签 |
|
显示/隐藏指示器 |
|
设置标签字体 |
参数宏¶
EGUI_VIEW_SCALE_PARAMS_INIT(name, x, y, w, h, min, max, major_tick_count);
代码示例¶
static egui_view_scale_t scale;
EGUI_VIEW_SCALE_PARAMS_INIT(scale_params, 10, 10, 200, 40, 0, 100, 5);
void init_ui(egui_core_t *core)
{
egui_view_scale_init_with_params(EGUI_VIEW_OF(&scale), core, &scale_params);
egui_view_scale_set_ticks(EGUI_VIEW_OF(&scale), 5, 4);
egui_view_scale_set_orientation(EGUI_VIEW_OF(&scale), 1);
egui_view_scale_show_labels(EGUI_VIEW_OF(&scale), 1);
egui_view_scale_show_indicator(EGUI_VIEW_OF(&scale), 1);
egui_view_scale_set_value(EGUI_VIEW_OF(&scale), 60);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&scale));
}
Compass¶
指南针控件,显示圆形表盘和方向指针,支持角度文字显示。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化指南针 |
|
使用参数初始化 |
|
设置方位角(0-359) |
|
设置是否显示角度文字 |
参数宏¶
EGUI_VIEW_COMPASS_PARAMS_INIT(name, x, y, w, h, heading);
结构体字段¶
字段 |
类型 |
说明 |
|---|---|---|
|
|
方位角(0-359) |
|
|
表盘线宽 |
|
|
表盘颜色 |
|
|
北方标记颜色 |
|
|
指针颜色 |
|
|
文字颜色 |
|
|
是否显示角度 |
代码示例¶
static egui_view_compass_t compass;
EGUI_VIEW_COMPASS_PARAMS_INIT(compass_params, 10, 10, 100, 100, 0);
void init_ui(egui_core_t *core)
{
egui_view_compass_init_with_params(EGUI_VIEW_OF(&compass), core, &compass_params);
egui_view_compass_set_show_degree(EGUI_VIEW_OF(&compass), 1);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&compass));
}
void update_heading(int16_t deg)
{
egui_view_compass_set_heading(EGUI_VIEW_OF(&compass), deg);
}
HeartRate¶
心率显示控件,绘制心形图标和 BPM 数值,支持脉搏动画效果。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化心率控件 |
|
使用参数初始化 |
|
设置心率值 |
|
启用/禁用脉搏动画 |
|
设置心形颜色 |
|
设置脉搏动画相位 |
参数宏¶
EGUI_VIEW_HEART_RATE_PARAMS_INIT(name, x, y, w, h, bpm);
代码示例¶
static egui_view_heart_rate_t hr;
EGUI_VIEW_HEART_RATE_PARAMS_INIT(hr_params, 10, 10, 80, 80, 72);
void init_ui(egui_core_t *core)
{
egui_view_heart_rate_init_with_params(EGUI_VIEW_OF(&hr), core, &hr_params);
egui_view_heart_rate_set_animate(EGUI_VIEW_OF(&hr), 1);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&hr));
}
void update_bpm(uint8_t bpm)
{
egui_view_heart_rate_set_bpm(EGUI_VIEW_OF(&hr), bpm);
}
Led¶
LED 指示灯控件,显示圆形灯珠,支持开/关状态切换和闪烁效果。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 LED |
|
使用参数初始化 |
|
点亮 LED |
|
熄灭 LED |
|
切换开关状态 |
|
启用闪烁(指定周期毫秒) |
|
停止闪烁 |
|
设置亮/灭颜色 |
参数宏¶
EGUI_VIEW_LED_PARAMS_INIT(name, x, y, w, h, is_on);
结构体字段¶
字段 |
类型 |
说明 |
|---|---|---|
|
|
当前开关状态 |
|
|
是否正在闪烁 |
|
|
闪烁周期(毫秒) |
|
|
点亮颜色 |
|
|
熄灭颜色 |
|
|
边框颜色 |
|
|
边框宽度 |
代码示例¶
static egui_view_led_t led_green;
static egui_view_led_t led_red;
EGUI_VIEW_LED_PARAMS_INIT(led_g_params, 10, 10, 20, 20, 1);
EGUI_VIEW_LED_PARAMS_INIT(led_r_params, 40, 10, 20, 20, 0);
void init_ui(egui_core_t *core)
{
egui_view_led_init_with_params(EGUI_VIEW_OF(&led_green), core, &led_g_params);
egui_view_led_set_colors(EGUI_VIEW_OF(&led_green), EGUI_COLOR_GREEN, EGUI_COLOR_DARK_GREEN);
egui_view_led_init_with_params(EGUI_VIEW_OF(&led_red), core, &led_r_params);
egui_view_led_set_colors(EGUI_VIEW_OF(&led_red), EGUI_COLOR_RED, EGUI_COLOR_DARK_RED);
egui_view_led_set_blink(EGUI_VIEW_OF(&led_red), 500);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&led_green));
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&led_red));
}