0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用GUI Guider工具开发嵌入式GUI应用(3)

冬至子 来源:安德鲁的设计笔记本 作者:安德鲁苏 2023-08-16 14:39 次阅读

引言

本节讲述在GUI Guider中,应用各种UI的基本元素,并顺利部署到MCU的过程。在GUI Guider中使用各LVGL的组件时,将会涉及到GUI Guider的操作,以及将某些组件额外生成的源码添加到Keil工程中。至于具体产品中的UI应用,可以是这些基本UI元素的组合使用,以实现更加丰富的显示效果。

在本文中,将说明使用通过GUI Guider创建并使用LVGL的label组件显示字符信息

在GUI Guider工程中创建label组件

在新建GUI Guider工程搭建MCU运行时的框架工程时,曾使用了label组件实现在屏幕上显示一个“Hello World”字符串的演示效果。Label是GUI Guider中最简单的组件,可用于显示字符。

当需要为某个页面添加一个显示字符串的对象时,可在编辑区域左边的工具栏中选择label按钮,此时,在组件窗口中就可以看到,当前的页面screen下出现了一个label_1的对象。如图x所示。

image.png

figure-gui-using-label-1
图x 新增label对象

双击在当前页面上出现的label对象,可以在编辑区域的右侧激活该对象的属性设置对话框,如图x所示。在其中,可以执行该对象的名字、位置、文本内容、字体、颜色等属性。当然,既然是在图形编辑界面,对象的位置也可以通过在图形编辑区拖拽对象来调整。

image.png

figure-gui-using-label-2
图x 编辑label对象属性

然后,重新生成代码。在运行时的Keil工程已经包含了静态页面的源文件,因此不用额外再执行添加文件的操作。但实际上,这里新生成的源码位于./gui/generated/setup_scr_screen.c文件中。有源码如下:

/*  
 * Copyright 2023 NXP  
 * SPDX-License-Identifier: MIT  
 * The auto-generated can only be used on NXP devices  
 */  
  
#include "lvgl.h"  
#include < stdio.h >  
#include "gui_guider.h"  
#include "events_init.h"  
#include "custom.h"  
  
  
void setup_scr_screen(lv_ui *ui){  
  
 //Write codes screen  
 ui- >screen = lv_obj_create(NULL);  
 lv_obj_set_scrollbar_mode(ui- >screen, LV_SCROLLBAR_MODE_OFF);  
  
 //Set style for screen. Part: LV_PART_MAIN, State: LV_STATE_DEFAULT  
 lv_obj_set_style_bg_color(ui- >screen, lv_color_make(0xff, 0xff, 0xff), LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_grad_color(ui- >screen, lv_color_make(0x21, 0x95, 0xf6), LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_grad_dir(ui- >screen, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_opa(ui- >screen, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
  
 //Write codes screen_label_1  
 ui- >screen_label_1 = lv_label_create(ui- >screen);  
 lv_obj_set_pos(ui- >screen_label_1, 51, 68);  
 lv_obj_set_size(ui- >screen_label_1, 218, 43);  
 lv_obj_set_scrollbar_mode(ui- >screen_label_1, LV_SCROLLBAR_MODE_OFF);  
 lv_label_set_text(ui- >screen_label_1, "Hello World");  
 lv_label_set_long_mode(ui- >screen_label_1, LV_LABEL_LONG_WRAP);  
  
 //Set style for screen_label_1. Part: LV_PART_MAIN, State: LV_STATE_DEFAULT  
 lv_obj_set_style_radius(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_color(ui- >screen_label_1, lv_color_make(0x7c, 0x00, 0xff), LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_grad_color(ui- >screen_label_1, lv_color_make(0x21, 0x95, 0xf6), LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_grad_dir(ui- >screen_label_1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_bg_opa(ui- >screen_label_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_shadow_width(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_shadow_color(ui- >screen_label_1, lv_color_make(0x21, 0x95, 0xf6), LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_shadow_opa(ui- >screen_label_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_shadow_spread(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_shadow_ofs_x(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_shadow_ofs_y(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_text_color(ui- >screen_label_1, lv_color_make(0xff, 0xff, 0xff), LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_text_font(ui- >screen_label_1, &lv_font_montserratMedium_32, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_text_letter_space(ui- >screen_label_1, 2, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_text_line_space(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_text_align(ui- >screen_label_1, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_pad_left(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_pad_right(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_pad_top(ui- >screen_label_1, 8, LV_PART_MAIN|LV_STATE_DEFAULT);  
 lv_obj_set_style_pad_bottom(ui- >screen_label_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);  
}

此时,可以通过预览页面,看到本页面的静态显示效果。还可以通过运行模拟器,在GUI Guider中模拟UI程序运行时的动态效果(如果有动态效果)。如图x所示。

image.png

figure-gui-using-label-3
图x 预览编辑label对象的效果

编译MCU工程并下载到开发板

编译对应的Keil工程,启动针对代码量的优化,看下对存储空间的占用。

Build started: Project: project  
*** Using Compiler 'V6.18', folder: 'C:Keil_v5ARMARMCLANGBin'  
Build target 'Target 1'  
compiling clock_init.c...  
compiling board_init.c...  
compiling hal_crc.c...  
compiling lcd_port.c...  
compiling pin_init.c...  
compiling lcd.c...  
...  
compiling events_init.c...  
compiling gui_guider.c...  
compiling lv_font_montserratMedium_16.c...  
compiling lv_table.c...  
compiling setup_scr_screen.c...  
compiling lv_font_montserratMedium_32.c...  
compiling lv_textarea.c...  
linking...  
Program Size: Code=154616 RO-data=64380 RW-data=148 ZI-data=29100    
".Objectsproject.axf" - 0 Error(s), 0 Warning(s).  
Build Time Elapsed:  00:00:14

下载程序到MCU并运行,可以看到,开发板上的显示屏上也成功显示了“同款”图像。如图x所示。

image.png

figure-gui-using-label-4-mini
图x 在开发板上运行UI显示label对象

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7151

    浏览量

    161999
  • 模拟器
    +关注

    关注

    2

    文章

    817

    浏览量

    42698
  • GUI
    GUI
    +关注

    关注

    3

    文章

    611

    浏览量

    38793
  • MCU控制器
    +关注

    关注

    0

    文章

    27

    浏览量

    6820
  • LVGL
    +关注

    关注

    0

    文章

    75

    浏览量

    2404
收藏 人收藏

    评论

    相关推荐

    使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1)

    LVGL是一个开源免费(MIT许可)的嵌入式GUI组件,支持触摸屏操作,移植简单方便,开发者一直在不断完善更新。
    的头像 发表于 08-16 14:29 1558次阅读
    使用<b class='flag-5'>GUI</b> <b class='flag-5'>Guider</b><b class='flag-5'>工具</b>在MCU上<b class='flag-5'>开发</b><b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>应用 (1)

    使用GUI Guider工具开发嵌入式GUI应用(2)

    GUI Guider本质上是一个方便嵌入式开发者基于LVGL开发GUI应用的源码生成器工具,其作
    的头像 发表于 08-16 14:36 2164次阅读
    使用<b class='flag-5'>GUI</b> <b class='flag-5'>Guider</b><b class='flag-5'>工具</b><b class='flag-5'>开发</b><b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>应用(2)

    图形界面开发工具GUI Guider的使用教程

    GUI Guider是NXP推出的一款功能强大且对用户非常友好的图形界面开发工具。目前最新版本是1.6.1。
    的头像 发表于 12-20 09:49 4981次阅读
    图形界面<b class='flag-5'>开发工具</b><b class='flag-5'>GUI</b> <b class='flag-5'>Guider</b>的使用教程

    如何选择嵌入式系统的GUI库?

    ` 本帖最后由 idea4good 于 2019-7-9 19:40 编辑 嵌入式系统由于软硬件资源的差异性,往往在选择GUI库时,打伤脑筋;或许有些开发者认为,直接选择Qt就可以了,但实践证明
    发表于 07-04 22:16

    基于Linux的嵌入式GUI设计研究

    本文介绍了嵌入式图形用户界面(Embedded Graphics User Interface,EmbeddedGUI)的结构和设计思想,详细说明了嵌入式GUI 的三层结构:GAL 和IAL 层、
    发表于 08-12 08:49 21次下载

    嵌入式系统开发之ucos在各种硬件上的GUI实现

    嵌入式系统开发之ucos在各种硬件上的GUI实现.rar 嵌入式用户图形接口uC/GUI在uC/OSII上的
    发表于 03-15 14:10 79次下载

    Linux GUI嵌入式开发有什么新的研究方向

    对比嵌入式 Linux 常见 GUI 方案,以及其它嵌入式 GUI 方案,AWTK 在嵌入式 Linux 系统上也极具优势,也能能很好的解决
    发表于 11-06 11:28 995次阅读
    Linux <b class='flag-5'>GUI</b><b class='flag-5'>嵌入式开发</b>有什么新的研究方向

    免费的GUI Guider又出新版本!看看它为嵌入式图形开发,带来哪些新玩法~

    GUI Guider是恩智浦推出的一款用户友好的嵌入式图形应用开发工具。它使用开源LVGL图形库作为底层图形引擎,提供可视化所见即所得的拖放UI编辑器,能够快速、轻松地为
    的头像 发表于 11-25 08:15 5902次阅读

    GUI-Guider生成工程移植MCU

    GUI Guider 是恩智浦为 LVGL 开发了一个上位机GUI 设计工具,可以通过拖放控件的方式设计 LVGL
    发表于 02-22 16:18 0次下载

    GUI Guider v1.5.0正式发布!它为嵌入式图形开发又带来哪些新功能,一起来探索吧~

    GUI Guider是恩智浦研发的一款用户友好、跨平台、支持多语言的嵌入式图形应用开发工具。它是基于开源的LVGL图形库,提供可视化所见即所得的拖放UI设计器,能够快速轻松地为
    的头像 发表于 02-24 08:10 2622次阅读

    GUI Guider v1.6.0正式发布:更多嵌入式HMI开发新功能,等你来探索!

    新版GUI Guider发布 GUI Guider 是恩智浦研发的一款用户友好、跨平台、支持多语言的嵌入式人机交互应用
    的头像 发表于 08-04 08:05 1212次阅读

    免费又简单!新版本GUI Guider发布,速来体验不一样的嵌入式HMI开发

    新版本GUI Guider发布 作为恩智浦研发的一款用户友好、跨平台、支持多语言的嵌入式人机交互应用开发工具GUI
    的头像 发表于 10-13 08:10 1629次阅读
    免费又简单!新版本<b class='flag-5'>GUI</b> <b class='flag-5'>Guider</b>发布,速来体验不一样的<b class='flag-5'>嵌入式</b>HMI<b class='flag-5'>开发</b>

    嵌入式GUI特训营』开营啦!是学霸就有奖拿,快来挑战一下!

    ! ↓↓↓ 点击这里,马上入营! 精品课程 在“嵌入式GUI特训营”中,通过NXP资深工程师主讲的7堂精品技术课程,你将会—— 了解GUI热点技术和开发技巧 结识免费的
    的头像 发表于 12-01 09:15 206次阅读
    『<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>特训营』开营啦!是学霸就有奖拿,快来挑战一下!

    嵌入式GUI开发特训营”开营啦!是学霸就有奖拿,快来挑战一下!

    前言 近期,恩智浦中国官方账号在国内知名视频平台"B站"推出了嵌入式GUI开发特训营系列视频教程:   https://www.bilibili.com/video
    的头像 发表于 12-07 10:55 724次阅读
    “<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b><b class='flag-5'>开发</b>特训营”开营啦!是学霸就有奖拿,快来挑战一下!

    GUI Guider新版本发布,嵌入式GUI开发体验升级

    作为恩智浦着力打造的一款嵌入式人机交互应用开发工具GUI Guider又迎来了一个新版本!最新发布的GUI
    发表于 03-29 09:47 368次阅读
    <b class='flag-5'>GUI</b> <b class='flag-5'>Guider</b>新版本发布,<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b><b class='flag-5'>开发</b>体验升级