本帖最后由 wuttttt 于 2024-3-19 14:27 编辑
在参考《华芯微特屏驱上位机使用手册v2024xxxx》完成平台的适配之后,就可以开始界面相关的布局,在布局完成后,需要通过编写应用代码来实现我们想要的功能。或许刚接触LVGL的小伙伴们就提出疑问了,我创建了一个按钮之后,如何实现这个按钮的功能呢?那么接下来的篇幅主要介绍如何注册按钮/图像按钮的回调函数,实现应用功能。
硬件平台:SWDM-QFP100-34SVEA3、JLT4301A(480x272) 仿真器:Jlink V9 软件平台:MDK5.33及以上
我们先使用UI Creator来搭建两个界面,如下图:
按照使用手册将ui.bin和cfg文件拷贝至spiflash后,Keil工程中添加ui_src文件夹,形成对应的软件框架后,然后我们来实现每个按钮旁边对应描述的一些功能,步骤如下: 步骤1:获取OBJ对象 - /*step1: 获取Obj对象 */
- btn_load_screen = synwit_ui_find_lv_obj(WIDGET_BUTTON1);
- btn_uart_send = synwit_ui_find_lv_obj(WIDGET_BUTTON2);
- btn_modify_style= synwit_ui_find_lv_obj(WIDGET_BUTTON3);
复制代码 步骤2:注册对象回调函数
- /*step2: 注册按键回调 */
- lv_obj_set_event_cb(btn_load_screen, btn_event_cb);
- lv_obj_set_event_cb(btn_uart_send, btn_event_cb);
- lv_obj_set_event_cb(btn_modify_style,btn_event_cb);
复制代码
步骤3:编写回调函数 - /* step3: 编写按钮回调函数 */
- void btn_event_cb(lv_obj_t *obj, lv_event_t event)
- {
- /* 示例1:加载界面 */
- if(obj == btn_load_screen){
- if(event == LV_EVENT_CLICKED)
- { /* To do*/
- synwit_ui_load_screen(SCREEN002); //跳转至界面2(SCREEN002)
- }
- }
- /* 示例2:发送数据 */
- if(obj == btn_uart_send){
- if(event == LV_EVENT_CLICKED)
- { /* To do */
- uint8_t buf[] = {"hi from synwit"};
- extern void uart_send_str(uint8_t *buf, uint32_t len);
- uart_send_str(buf, sizeof(buf)); //串口发送字符串
- }
- }
-
- /* 示例3:修改样式 */
- if(obj == btn_modify_style)
- {
- if(event == LV_EVENT_CLICKED)
- { /* To do */
- static uint8_t state = 0;
- lv_obj_t *label_text = synwit_ui_find_lv_obj(WIDGET_LABEL1);
- if(state == 0){
- lv_obj_set_style_local_text_color(label_text, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); //改变字体颜色
- state = 1;
- }else if(state == 1){
- lv_obj_set_style_local_text_color(label_text, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); //改变字体颜色
- state = 0;
- }
- }
- }
- }
复制代码
至此,我们完成了按键对象获取、注册回调函数、编写回调函数的流程,可以下载烧录到样板上查看效果,结合代码,我们不难看出,按下“l加载界面”时,界面会跳转至界面2;按下“串口发送”时,uart0会发送一串数据,将Demo板中CH340的TX RX与芯片M0 M1短接后,可在串口助手中查看发送的数据;按下“修改样式”时,右边的描述文字的颜色会发生改变。
附件:1、该Demo的UI Creator工程以及Keil工程 2、演示视频
btn&imgbtn演示视频.mp4
(9.54 MB, 下载次数: 7)
UI_Creator_V2.3.0_btn_imgbtn.zip
(3.3 MB, 下载次数: 13)
Button_ImgBtn_Demo.zip
(38.51 KB, 下载次数: 12)
|