LVGL v8 Basechart 示例
源码路径: SiFli-SDK/example/multimedia/lvgl/lvgl_v8_basechart
概述
本例程演示 lvsf_basechart 图表控件,用来绘制一条或多条数据序列(折线/柱状)。先设图表类型和点数、数值范围和网格,再添加序列(指定颜色)、往序列里推入数值,最后刷新即可。本例程画两条折线序列。
要点:
部件样式:
LV_PART_ITEMS是序列线条(line_width),LV_PART_INDICATOR是数据点标记(width/height)。每条序列由
lv_basechart_add_series()创建并返回句柄,数值通过lv_basechart_set_next_value()逐点推入。basechart 基于 LVGL chart,需在配置中开启
CONFIG_LV_USE_CHART=y(本例程proj.conf已开)。
用法(关键 API)
lv_obj_t *chart = lv_basechart_create(parent);
lv_obj_set_size(chart, 280, 180);
lv_obj_set_style_line_width(chart, 3, LV_PART_ITEMS); /* 序列线宽 */
lv_obj_set_style_width(chart, 5, LV_PART_INDICATOR); /* 数据点大小 */
lv_obj_set_style_height(chart, 5, LV_PART_INDICATOR);
lv_basechart_set_type(chart, LV_CHART_TYPE_LINE); /* 折线; 也可 BAR/SCATTER */
lv_basechart_set_point_count(chart, 10); /* 每序列点数 */
lv_basechart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
lv_basechart_set_div_line_count(chart, 5, 6); /* 网格行列数 */
lv_chart_series_t *s = lv_basechart_add_series(chart, lv_palette_main(LV_PALETTE_RED),
LV_CHART_AXIS_PRIMARY_Y);
for (int i = 0; i < 10; i++)
lv_basechart_set_next_value(chart, s, vals[i]); /* 逐点推入数值 */
lv_basechart_refresh(chart);
支持的开发板
sf32lb52-lcd_n16r8
sf32lb52-lchspi-ulp
编译和烧录
板子工程在 project 目录下,通过指定 board 编译对应板子的工程:
例如编译 sf32lb52-lcd_n16r8:在
project目录执行scons --board=sf32lb52-lcd_n16r8 -j8烧录通过 build 目录下的
download.bat(或uart_download.bat)进行SF32LB52x/SF32LB56x 系列会额外生成
uart_download.bat,执行后输入下载 UART 端口号即可
模拟器
在 project 目录执行 scons --board=pc_hcpu -j8,生成 build_pc_hcpu/main.exe 直接运行即可看到窗口。
需要先按本机 MSVC 配置改好
SiFli-SDK/msvc_setup.bat。
运行说明
例程启动后屏幕中央显示一个白底图表:带网格线,上面是两条折线(红、蓝),每条 10 个数据点,纵轴范围 0~100。
异常诊断
如有任何技术疑问,请在 GitHub 上提出 issue