【第3版emWin教程】第49章 emWin6.x的AppWizard创建控件回调消息

2023-12-17 00:32

本文主要是介绍【第3版emWin教程】第49章 emWin6.x的AppWizard创建控件回调消息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第50章(2021-10-01) - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz!icon-default.png?t=L9C2http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429

第49章       emWin6.x的AppWizard创建控件回调消息

本期教程为大家讲解emWin6.x的GUI开发工具AppWizard创建控件回调消息。

目录

49.1 初学者重要提示

49.2 AppWizard创建控件回调函数

49.2.1        下载安装AppWizard

49.2.2        创建AppWizard工程

49.2.3 添加控件

49.2.4 设置默认的位图格式

49.2.5 设置按钮控件回调函数

49.2.6 运行AppWizard

49.2.7 导出AppWizard代码

49.3 AppWizard生成的VS工程使用VS2019运行方法

49.4 AppWizard创建的界面添加到工程

49.4.1        添加一批xxxx_Private.h文件到工程

49.4.2        添加AppWizard界面文件到工程

49.4.3        添加工程路径

49.4.4        修改程序

49.4.5        添加按钮回调函数消息

49.5 实验例程说明(RTOS)

49.6 实验例程说明(裸机)

49.7 总结


49.1 初学者重要提示

  1.   使用的AppWizard版本一定要和emWin版本匹配,本章配套例子使用的emWin版本是V6.16。对应的AppWizard版本是V1.20,下载地址 。
  2.   AppWizard工程路径不支持中文,使用时特别注意。
  3.   AppWizard生成的emWin6.x工程可以方便的融合之前的低版本emWin工程代码,在回调函数里面可以方便的添加之前基于窗口或者对话框创建的界面。

49.2 AppWizard创建控件回调函数

下面使用AppWizard创建控件回调函数,先让大家有个整体认识,方便后面章节的展开。

49.2.1        下载安装AppWizard

下载地址:AppWizard升级至V1.20(2021-03-16) - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz!icon-default.png?t=L9C2http://www.armbbs.cn/forum.php?mod=viewthread&tid=105049 安装后效果如下:

 

49.2.2        创建AppWizard工程

选择Create new project:

 

下面要需要设置配置项,主要是Color format颜色格式别配置错了,要跟开发板emWin工程的颜色格式一致,我们这里设置为16位色,M565。

 

创建后效果如下:

 

49.2.3 添加控件

依次点击左上角的控件对象:Screen和Box:

 

设置背景色:

 

添加两个按钮控件和一个二维码:

 

49.2.4 设置默认的位图格式

点击菜单Edit -> Preferences:

 

由于我们前面设置的M565颜色格式,这里设置GUICC_M565选项即可:

 

这个设置很重要,否则很容易造成AppWizard生成的工程代码移植到板子上硬件异常。

49.2.5 设置按钮控件回调函数

点击下面的‘+’号:

 

选择ID_BUTTON_00:

 

选择Clicked点击消息:

 

选择NULL:

 

在下面弹出的对话框中,大家可以根据需要修改Slot里面的内容,实际生成的代码里面,对应按键按下消息的函数名:

 

至此就完成了按钮回调消息的设置。

49.2.6 运行AppWizard

点击下面这个小按钮可以运行设计的界面:

 

 

49.2.7 导出AppWizard代码

点击菜单File -> Export & Save即可导出:

 

导出文件在创建时设置的路径中。

49.3 AppWizard生成的VS工程使用VS2019运行方法

导出的VS工程文件位于如下路径:

 

 

 

运行后效果如下:

 

49.4 AppWizard创建的界面添加到工程

AppWizard生成界面代码后,将其添加到工程中。这个过程有几个注意事项,在下面步骤中会为大家说明。

49.4.1        添加一批xxxx_Private.h文件到工程

开发板的工程文件里面没有这些文件,需要大家从AppWizard工程路径:Simulation\GUI_Lib 里面复制到开发板工程路径\emWin\Include里面,下面是部分截图,详情看本章节配套的例子即可:

 

49.4.2        添加AppWizard界面文件到工程

方便起见,将AppWizard所有文件复制到开发板工程里面:

 

添加到工程的效果如下:

 

49.4.3        添加工程路径

仅添加一个路径选项即可:

 

49.4.4        修改程序

主要修改两个地方:

  •   bsp.c文件将LCD背光点亮。
void bsp_Init(void)
{/* 省略未写 *//* 延迟200ms再点亮背光,避免瞬间高亮 */bsp_DelayMS(200); LCD_SetBackLight(255);
}
  •   APPWConf.c文件

使能三缓冲,关闭文件系统。

/*********************************************************************
*
*       Multibuffering
*/
static U8 _MultibufEnable = 1;/*********************************************************************
*
*       Static code
*
**********************************************************************
*/
/*********************************************************************
*
*       _InitText
*/
static void _InitText(void) {//// Empty, because application does not contain any text//
}/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       APPW_X_Setup
*/
void APPW_X_Setup(void) {APPW_SetpfInitText(_InitText);//APPW_X_FS_Init();APPW_MULTIBUF_Enable(_MultibufEnable);APPW_SetData(_apRootList, _NumScreens, _aVarList, _NumVars);
}

49.4.5        添加按钮回调函数消息

修改文件ID_SCREEN_00_Slots.c,在消息ID_SCREEN_00__ID_BUTTON_00__WM_NOTIFICATION_CLICKED 里面添加处理,我们这里做了简单的LED闪烁和串口打印:

#include "Application.h"
#include "../Generated/Resource.h"
#include "../Generated/ID_SCREEN_00.h"
#include "bsp.h"/*** Begin of user code area ***/
/*** End of user code area ***//*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       cbID_SCREEN_00
*/
void cbID_SCREEN_00(WM_MESSAGE * pMsg) {GUI_USE_PARA(pMsg);
}/*********************************************************************
*
*       ID_SCREEN_00__ID_BUTTON_00__WM_NOTIFICATION_CLICKED
*/
void ID_SCREEN_00__ID_BUTTON_00__WM_NOTIFICATION_CLICKED(APPW_ACTION_ITEM * pAction, WM_HWIN hScreen, WM_MESSAGE * pMsg, int * pResult) {bsp_LedToggle(1);printf("按钮按下\r\n");
}

通过前面这几步就完成了AppWizard的回调消息处理。

49.5 实验例程说明(RTOS)

配套例子:

V7-560_emWin6.x实验_AppWizard控件回调消息(RTOS)

实验目的:

  1. 学习AppWizard控件回调消息。
  2. 点击第1个按钮可以实现LED1反转和串口打印。

实验内容:

1、K1按键按下,串口或者RTT打印任务执行情况(串口波特率115200,数据位8,奇偶校验位无,停止位1)。

2、(1) 凡是用到printf函数的全部通过函数App_Printf实现。

(2) App_Printf函数做了信号量的互斥操作,解决资源共享问题。

3、默认上电是通过串口打印信息,如果使用RTT打印信息:

MDK AC5,MDK AC6或IAR通过使能bsp.h文件中的宏定义为1即可

#define Enable_RTTViewer  1

4、各个任务实现的功能如下:

App Task Start   任务 :启动任务,这里用作BSP驱动包处理。

App Task MspPro任务 :消息处理,这里用作LED闪烁。

App Task UserIF  任务 :按键消息处理。

App Task COM   任务 :暂未使用。

App Task GUI    任务 :GUI任务。

μCOS-III任务调试信息(按K1按键,串口打印):

 

RTT 打印信息方式:

 

程序设计:

任务栈大小分配:

μCOS-III任务栈大小在app_cfg.h文件中配置:

#define  APP_CFG_TASK_START_STK_SIZE                      512u

#define  APP_CFG_TASK_MsgPro_STK_SIZE                     2048u

#define  APP_CFG_TASK_COM_STK_SIZE                        512u

#define  APP_CFG_TASK_USER_IF_STK_SIZE                    512u

#define  APP_CFG_TASK_GUI_STK_SIZE                        2048u

任务栈大小的单位是4字节,那么每个任务的栈大小如下:

App Task Start   任务 :2048字节。

App Task MspPro任务 :8192字节。

App Task UserIF  任务 :2048字节。

App Task COM   任务 :2048字节。

App Task GUI    任务 :8192字节。

  系统栈大小分配:

μCOS-III的系统栈大小在os_cfg_app.h文件中配置:

#define  OS_CFG_ISR_STK_SIZE                      512u     

系统栈大小的单位是4字节,那么这里就是配置系统栈大小为2KB

emWin动态内存配置:

GUIConf.c文件中的配置如下:

#define EX_SRAM   1/*1 used extern sram, 0 used internal sram */#if EX_SRAM
#define GUI_NUMBYTES  (1024*1024*24)
#else
#define GUI_NUMBYTES  (100*1024)
#endif

通过宏定义来配置使用内部SRAM还是外部的SDRAM做为emWin的动态内存,当配置:

#define  EX_SRAM     1 表示使用外部SDRAM作为emWin动态内存,大小24MB。

#define  EX_SRAM     0 表示使用内部SRAM作为emWin动态内存,大小100KB。

默认情况下,本教程配套的所有emWin例子都是用外部SDRAM作为emWin动态内存。

emWin界面显示效果:

800*480分辨率界面效果。

 

49.6 实验例程说明(裸机)

配套例子:

V7-559_emWin6.x实验_AppWizard控件回调消息(裸机)

实验目的:

  1. 学习AppWizard控件回调消息。
  2. 点击第1个按钮可以实现LED1反转和串口打印。

emWin界面显示效果:

800*480分辨率界面效果。

 

emWin动态内存配置:

GUIConf.c文件中的配置如下:

#define EX_SRAM   1/*1 used extern sram, 0 used internal sram */#if EX_SRAM
#define GUI_NUMBYTES  (1024*1024*24)
#else
#define GUI_NUMBYTES  (100*1024)
#endif

通过宏定义来配置使用内部SRAM还是外部的SDRAM做为emWin的动态内存,当配置:

#define  EX_SRAM     1 表示使用外部SDRAM作为emWin动态内存,大小24MB。

#define  EX_SRAM     0 表示使用内部SRAM作为emWin动态内存,大小100KB。

默认情况下,本教程配套的所有emWin例子都是用外部SDRAM作为emWin动态内存。

49.7 总结

本章节主要是为大家讲解了AppWizard控件回调消息的处理,后续章节将深入为大家说明。

这篇关于【第3版emWin教程】第49章 emWin6.x的AppWizard创建控件回调消息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/502465

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06