串口屏MINIC教程-回调函数使用说明V1.0

2025-04-09 11:21:07

通过MINIC教程DEMO讲述如何使用MINIC设置变量值。

工具/原料

硬件平台(基本型(经济型、商业型)物联型、F型)

UI素材

MINIC编辑器

硬件平台

1、该例程使用大彩基本型7寸串口屏DC80480B070为验证开发平台。

UI素材准备

1、准备好相应的美工UI。如图所示

串口屏MINIC教程-回调函数使用说明V1.0

MINIC编辑器

1、1.上位机VisualTFT内部已集成了MINIC开发编译环境,点击菜单栏工具,选择MINIC编辑器,如图所示。

串口屏MINIC教程-回调函数使用说明V1.0

2、2.打开编辑器后,Visual TFT画面如图所示;

串口屏MINIC教程-回调函数使用说明V1.0

实现功能

1、教程DEMO中功能的实现步骤如下:1.新建工程;2.配置MODBUS协议;3.画面配置;4.运行预览。

2、1.1.1新建工程打开VisualTFT软件的菜单栏【文件】→【新建工程】,弹出新建工程窗口,设置工程名称、路径、 设备型号,点击【确定】,如图所示;

串口屏MINIC教程-回调函数使用说明V1.0

3、1.1.2MODBUS协议配置1.点击软件VisualTFT菜单栏中的【工具】并选择【协议与变量设置】,如图所示;

串口屏MINIC教程-回调函数使用说明V1.0

4、在“协议与变量设置”窗口中,先点击左侧的【协议设置】,然后在右侧【启用协议】选择“启用”,【协议类型】选择“MODBUS从机协议”,协议配置详细如图 所示。

串口屏MINIC教程-回调函数使用说明V1.0

5、配置协议完成后,点击【变量定义】,然后点击“添加”按钮添加变量,详细配置如图所示;

串口屏MINIC教程-回调函数使用说明V1.0

6、1.1.3配置工程画面1.首页画面配置画面中放置六个按钮并设置为切换画面属性,分别指向相对应的画面,如图所示;

串口屏MINIC教程-回调函数使用说明V1.0

7、2.on_init画面配置(1)打开VisualTFT软件的菜单栏【工具】→【协议与变量设置】,在协议与变量设置画面中添加两个保存寄存器,寄存器地址分别为0和1并分别命名为“电压”和“电流”,如图1所示;(2)将画面中文本控件1、2分别绑定变量“电压”、“电流”,如图2所示。

串口屏MINIC教程-回调函数使用说明V1.0
串口屏MINIC教程-回调函数使用说明V1.0

8、(3)画面功能:系统初始化时调用函数对变量赋值。对应的功能函数编写程序如程序清单 1所示;程序清单 1on_init程序/**************************************************************************** 函数:on_init** 功能:系统执行初始化** 注意:局部变量定义,只能在函数的最前面定义***************************************************************************/void on_init(){//// 画面:on_init// 功能:初始化电压为10、电流为2//"电压" = 10;"电流" = 2;......}

9、3.on_systick画面配置(1)打开VisualTFT软件的菜单栏【工具】→【协议与变量设置】,在协议与变量设置画面中添加一个保存寄存器,寄存器地址为2并命名为“运行时间”,如图 1所示;(2)将画面中文本控件1绑定变量“运行时间”,如图2所示;

串口屏MINIC教程-回调函数使用说明V1.0
串口屏MINIC教程-回调函数使用说明V1.0

10、(3)画面功能:系统运行后,每一秒调用一次on_systick,在on_systi罕铞泱殳ck函数内添加一个计数儡泌掩羞器,可以算出运行时间。对应的功能函数编写程序如程序清单 2所示。程序清单 2on_systick/**************************************************************************** 函数:on_systick** 功能:定期执行任务(1秒1次)** 局部变量定义,只能在函数的最前面定义***************************************************************************/void on_systick(){//// 画面:on_systick// 功能:每次增加一秒// 注意:局部变量定义,只能在函数的最前面定义//++"运行时间";}

11、4.on_timer画面配置(1)打开VisualTFT软件的菜单栏【工具】→【协议与变量设置】,在协议与变量设置画面中添加一个保存寄存器,寄存器地址为3并命名为“计数”,如图 1所示(2)将画面中文本控件3绑定变量“计数”,如图 2所示。

串口屏MINIC教程-回调函数使用说明V1.0
串口屏MINIC教程-回调函数使用说明V1.0

12、(3)画面功能:按下开启定时器后,按照设定的时间循环调用定时器函数on_timer,每次调用都让计数器自加一,通过绑定文本着抹较氰控件将计数器的值在画面中显示出来,对应的功能函数编写程序如程序清单 3和程序清单 4所示程序清单 3on_timer程序void on_timer(int timer_id){if(timer_id == 0){////画面:on_timer//功能:计数器,记录定时器触发次数//注意:局部变量定义,只能在函数的最前面定义//"计数"++;}}程序清单 4按钮触发函数/****************************************************************************** 函数:on_control_notify** 功能:控件值更新通知** 参数:screen_id,画面ID** 参数:control_id,控件ID** 参数:value,新值** 注意:局部变量定义,只能在函数的最前面定义****************************************************************************/void on_control_notify(int screen_id,int control_id,int value){if(screen_id == 3){//// 功能:按钮控制开启定时器和停止定时器// 函数:start_timer(timer_id, timeout, countdown, repeat)// 函数功能:启动定时器// 参数: timer_id, 定时器ID;// timeout, 超时时间;// countdown, 1顺计时,0倒计时// repeat 计时次数,0无限循环//if(control_id == 1 && value == 1){start_timer(0, 1000, 1, 0 );}//// 函数:stop_timer(timer_id)// 函数功能:启动定时器// 参数: timer_id, 定时器ID;//if(control_id == 2 && value == 1){//停止定时器stop_timer(0);}}......}

13、5.on_variant_update 画面配置(1)打开VisualTFT软件的菜单栏【工具】→【协议与变量设置】,在协议与变量设置画面中添加三个保存寄存器,寄存器地址分别为4、5、6并将寄存器分别命名为“速度”、“时间”、“里程”,如图1所示(1)将画面中文本控件1、2、3分别绑定变量“速度”、“时间”、“里程”,如图2所示

串口屏MINIC教程-回调函数使用说明V1.0
串口屏MINIC教程-回调函数使用说明V1.0

14、(3)画面功能:当变量发生变化后会触发此函数,对应的功能函数编写程序,如程序清单 猱蝰逾鸾5所示程序清单 5变量更新回调函数/**************************************************************************** 函数:on_variant_upate** 功能:串口通信导致变量更新时,执行此函数** 注意:局部变量定义,只能在函数的最前面定义***************************************************************************/void on_variant_upate(){////功能:操作符'@'用于判定某个寄存器是否发生改变// 速度或者时间发生变化时,重新计算里程//注意:局部变量定义,只能在函数的最前面定义//if(@"速度" || @"时间") {"里程" = "速度" * "时间";}}

15、6.on_control_notify 画面配置(1)打开VisualTFT软件的菜单栏【工具】→【协议与变量设置】,在协议与变量设置画面中添加一个保存寄存器,寄存器地址为7并命名为“通知次数”,如图 1所示(2)将画面中文本控件7绑定变量“通知次数”,如图 2所示;

串口屏MINIC教程-回调函数使用说明V1.0
串口屏MINIC教程-回调函数使用说明V1.0

16、(4)画面功能:每次操作控件都会相应调用一次on_control_notify,通过一个计数器将每次触发都统计起来,并绑定文本控件在画面中显示次数。对应的功能函数编写程序,如程又挨喁钒序清单 6所示程序清单 6on_control_notify 程序/****************************************************************************** 函数:on_control_notify** 功能:控件值更新通知** 参数:screen_id,画面ID** 参数:control_id,控件ID** 参数:value,新值** 注意:局部变量定义,只能在函数的最前面定义****************************************************************************/void on_control_notify(int screen_id,int control_id,int value){......if(screen_id == 5){if(control_id == 1) //运行按钮{if(value == 0) //弹起通知{"通知次数" ++; }else if(value == 1) //按下通知{"通知次数" ++; }else if(value == 2) //长按通知{"通知次数" ++;}}else if(control_id == 2) //文本控件{"通知次数" ++; }else if(control_id == 3) //图标控件{if(value == 0){"通知次数" ++; //弹起通知}else if(value == 1){"通知次数" ++; //按下通知}}else if(control_id == 4) //选择控件{ "通知次数" ++; }else if(control_id == 5) //菜单{ "通知次数" ++; }else if(control_id == 6) //滑块{ "通知次数" ++; }}}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢