华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 175|回复: 0

【UI Creator应用示例】UI Creator中按钮如何注册回调函数

[复制链接]

12

主题

13

帖子

142

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
142
发表于 2025-12-16 09:34:00 | 显示全部楼层 |阅读模式
    在参考《华芯微特屏驱上位机使用手册v2024xxxx》完成平台的适配之后,就可以开始界面相关的布局,在布局完成后,需要通过编写应用代码来实现我们想要的功能。或许刚接触LVGL的小伙伴们就提出疑问了,我创建了一个按钮之后,如何实现这个按钮的功能呢?那么接下来的篇幅主要介绍如何注册按钮/图像按钮的回调函数,实现应用功能。
     硬件平台:SWDM-QFP100-34SVEA3、JLT4301A(480x272)
     仿真器:Jlink V9
     软件平台:MDK5.33及以上
     我们先使用UI Creator来搭建两个界面,如下图:
1.png    2.png
按照使用手册将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:编写回调函数
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, 下载次数: 1)
Button_ImgBtn_Demo.zip (38.51 KB, 下载次数: 5)
UI_Creator_V2.3.0_btn_imgbtn.zip (3.3 MB, 下载次数: 4)



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2026-9-17 18:36 , Processed in 0.032247 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表