华芯微特开发论坛

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

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

[复制链接]

3

主题

8

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2024-3-19 14:14:35 | 显示全部楼层 |阅读模式
本帖最后由 wuttttt 于 2024-3-19 14:27 编辑

      在参考《华芯微特屏驱上位机使用手册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对象
  1. /*step1: 获取Obj对象 */
  2. btn_load_screen  = synwit_ui_find_lv_obj(WIDGET_BUTTON1);
  3. btn_uart_send    = synwit_ui_find_lv_obj(WIDGET_BUTTON2);
  4. btn_modify_style= synwit_ui_find_lv_obj(WIDGET_BUTTON3);
复制代码
步骤2:注册对象回调函数
  1. /*step2: 注册按键回调 */
  2. lv_obj_set_event_cb(btn_load_screen,  btn_event_cb);
  3. lv_obj_set_event_cb(btn_uart_send,   btn_event_cb);
  4. lv_obj_set_event_cb(btn_modify_style,btn_event_cb);
复制代码

步骤3:编写回调函数
  1. /* step3: 编写按钮回调函数 */
  2. void btn_event_cb(lv_obj_t *obj, lv_event_t event)
  3. {
  4.       /* 示例1:加载界面 */
  5.       if(obj == btn_load_screen){
  6.             if(event == LV_EVENT_CLICKED)
  7.             {        /* To do*/
  8.                     synwit_ui_load_screen(SCREEN002);        //跳转至界面2(SCREEN002)
  9.             }
  10.        }

  11.       /* 示例2:发送数据 */
  12.       if(obj == btn_uart_send){
  13.             if(event == LV_EVENT_CLICKED)
  14.             {        /* To do */
  15.                     uint8_t buf[] = {"hi from synwit"};
  16.                     extern void uart_send_str(uint8_t *buf, uint32_t len);
  17.                     uart_send_str(buf, sizeof(buf));        //串口发送字符串
  18.              }
  19.        }
  20.         
  21.        /* 示例3:修改样式 */
  22.        if(obj == btn_modify_style)
  23.        {
  24.               if(event == LV_EVENT_CLICKED)
  25.               {        /* To do */
  26.                      static uint8_t state = 0;
  27.                      lv_obj_t *label_text = synwit_ui_find_lv_obj(WIDGET_LABEL1);
  28.                      if(state == 0){
  29.                            lv_obj_set_style_local_text_color(label_text, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);                //改变字体颜色
  30.                            state = 1;
  31.                      }else if(state == 1){
  32.                            lv_obj_set_style_local_text_color(label_text, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);        //改变字体颜色
  33.                            state = 0;
  34.                       }
  35.                }
  36.        }
  37. }
复制代码

       至此,我们完成了按键对象获取、注册回调函数、编写回调函数的流程,可以下载烧录到样板上查看效果,结合代码,我们不难看出,按下“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)





回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2024-3-22 00:18:03 | 显示全部楼层
”《华芯微特屏驱上位机使用手册v2024xxxx》”在哪里下载?
回复

使用道具 举报

1

主题

3

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2024-3-22 15:37:18 | 显示全部楼层
vicon 发表于 2024-3-22 00:18
”《华芯微特屏驱上位机使用手册v2024xxxx》”在哪里下载?

资料下载-> 微信图片_20240322153145.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 06:57 , Processed in 0.034842 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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