当前位置: 首页 > news >正文

MATLAB GUI界面设计 第三章——仪器组件

参考教程:MATLAB App Designer基础教程Matlab GUI界面设计(全集更新完毕-用户界面设计appdesigner(中文)Matlab Gui教程_哔哩哔哩_bilibili

一、案例——温度预警提示灯(信号灯用例)

1、前端制作

        新建一个工程,在画布中添加如下组件,其中输入温度的组件为数值编辑字段,显示提示信息的组件为文本编辑字段。

2、后端制作

(1)APP预期实现的功能为——用户输入一个温度后,APP根据该温度判断是否报警,提示灯显示相应的颜色,同时输出相应的提示信息。

温度区间

提示灯颜色

提示信息

<-40℃

蓝色

ECU温度过低

≥-40℃且<120℃

绿色

ECU温度正常

≥120℃

红色

ECU温度过高

(2)右键输入温度的数值编辑字段,为其添加回调函数,因为程序的动作需要依赖用户在此控件上的输入数值,当用户输入一个温度数值后执行了其它操作,就会调用一次回调函数。

(3)回调函数中填入如下代码,其中提示灯的颜色属性Color需用字符串赋值,字符串的内容为RBG颜色比例系数,最大值为1,各系数用逗号分隔(当然,颜色参数有其它的表示方法,可以通过设置对象属性进行变更)。

% ECU温度赋值给变量value
ecu_Temp = app.Temp.Value;% 判断ECU温度情况
if ecu_Temp < -40% 温度过低app.Lamp.Color = "0.00,0.00,1.00"; 	% 提示灯颜色改为蓝色app.Tip.Value = "ECU温度过低"; 		% 输出温度过低的提示信息
elseif ecu_Temp >= -40 && ecu_Temp < 120% 温度过低app.Lamp.Color = "0.00,1.00,0.00"; 	% 提示灯颜色改为绿色app.Tip.Value = "ECU温度正常"; 		% 输出温度过低的提示信息
elseif ecu_Temp >= 120% 温度过高app.Lamp.Color = "1.00,0.00,0.00"; 	% 提示灯颜色改为红色app.Tip.Value = "ECU温度过高"; 		% 输出温度过低的提示信息 
end

3、试运行

        保存文件后点击“运行”,测试APP是否满足需求。

二、案例——开关实验程序(三种开关用例)

1、前端制作

(1)新建一个工程,在画布中添加如下组件。

(2)三种开关都可以设置方向是竖向或是横向。

2、后端制作

(1)APP预期实现的功能为——打开一个开关,相应的指示灯颜色变为蓝色,关闭一个开关,相应的指示灯颜色变为绿色。

(2)开关对应开和关两种状态,相应地,开关对象中也会有一个成员属性Value记录这个状态,它的数据类型为字符串,开和关对应的字符串可由程序员自行定义,默认为“On”和“Off”。

(3)分别为3个开关添加回调函数,并添加以下代码。

①开关的回调函数:

% 获取开关状态
value_Switch = app.Switch.Value;% 指示灯动作
if strcmp(value_Switch, "On")		  			% 判断开关状态是否为“On”app.Lamp_Switch.Color = "0.00,0.00,1.00";   % 提示灯颜色改为蓝色
elseif strcmp(value_Switch, "Off")	  		    % 判断开关状态是否为“Off”app.Lamp_Switch.Color = "0.00,1.00,0.00";   % 提示灯颜色改为绿色
end

②翘板开关的回调函数:

% 获取翘板开关状态
value_Switch_see_saw = app.Switch_see_saw.Value;% 指示灯动作
if strcmp(value_Switch_see_saw, "On")		          % 判断翘板开关状态是否为“On”app.Lamp_Switch_see_saw.Color = "0.00,0.00,1.00"; % 提示灯颜色改为蓝色
elseif strcmp(value_Switch_see_saw, "Off")            % 判断翘板开关状态是否为“Off”app.Lamp_Switch_see_saw.Color = "0.00,1.00,0.00"; % 提示灯颜色改为绿色
end

③拨动开关的回调函数:

% 获取拨动开关状态
value_Switch_stir = app.Switch_stir.Value;% 指示灯动作
if strcmp(value_Switch_stir, "On")		           % 判断拨动开关状态是否为“On”app.Lamp_Switch_stir.Color = "0.00,0.00,1.00"; % 提示灯颜色改为蓝色
elseif strcmp(value_Switch_stir, "Off")	           % 判断拨动开关状态是否为“Off”app.Lamp_Switch_stir.Color = "0.00,1.00,0.00"; % 提示灯颜色改为绿色
end

3、试运行

        保存文件后点击“运行”,测试APP是否满足需求。

三、案例——旋钮调节温度程序(仪表和旋钮用例)

1、前端制作

(1)新建一个工程,在画布中添加如下组件。

(2)仪表属性设置:

①在标度属性中可配置仪表显示的值(初始值)、最小值和最大值,以及值的递增方向;在本案例中计划用仪表显示温度,则可以将温度划分为三个区间,常温区用绿色表示,过温区用黄色表示,高温区用红色表示。

②在刻度属性中可配置仪表显示的刻度(以及刻度标签,刻度标签对应一个刻度值),可以输入刻度间隔,Designer会自动根据最值和刻度间隔进行配置,当然也可以手动配置刻度间隔,一些精度要求比较高的区域可配置间隔更小的刻度,同时刻度标签也可自行更改。

(3)旋钮属性设置:

①在范围属性中可配置旋钮的值(初始位置)、最小值(逆时针终点对应的值)和最大值(顺时针终点对应的值)。

②在刻度属性中可配置旋钮读数的刻度(以及刻度标签,刻度标签对应一个刻度值),可以输入刻度间隔,Designer会自动根据最值和刻度间隔进行配置,当然也可以手动配置刻度间隔,一些精度要求比较高的区域可配置间隔更小的刻度,同时刻度标签也可自行更改。

2、后端制作

(1)本案例需要用户手动调节旋钮,所以需要为旋钮添加回调函数,但相比于按钮组件,旋钮组件有两种回调函数,因为调节旋钮并非一个瞬态的过程,只要用户的鼠标捏着旋钮不放,那么旋钮的值就能一直被用户改变,针对这种情况,有两种回调函数(其它有类似情形的组件也会有这两种回调函数):

①ChangedFcn函数:当用户调节完旋钮并释放鼠标后触发,用户调节旋钮的过程中不会触发。

②ChangingFcn:用户调节旋钮时持续触发。

(2)很显然,旋钮调节的温度需要实时更新,同时也要实时显示在仪表上,所以旋钮需增加ChangingFcn回调函数,并在其中写入以下代码。

% 获取旋钮实时值
changingValue = event.Value;% 旋钮值更新至温度变量中
Temp = changingValue;% 温度值更新至仪表上
app.Gauge.Value = Temp;

3、试运行

        保存文件后点击“运行”,测试APP是否满足需求。

4、拓展

(1)仪表组件各式各样,但它们的功能基本类似,只是形状不一致,这里不再过多赘述。

(2)旋钮组件除了一般旋钮以外还有分档旋钮,二者的主要区别如下:

①一般旋钮调节数值,分档旋钮调节档位,每个档位用字符串命名。

②一般旋钮的Value值是数字类型,分档旋钮的Value值是字符串类型。

③一般旋钮可添加ChangingFcn函数,分档旋钮不可添加ChangingFcn函数。

http://www.lryc.cn/news/574372.html

相关文章:

  • 【无刷电机FOC进阶基础准备】【04 clark变换、park变换、等幅值变换】
  • MultipartFile、File 和 Mat
  • 从0开始学习R语言--Day30--函数型分析
  • SQL Server2022版详细安装教程(Windows)
  • 63-差分电流检测电路
  • 【Verilog】Verilator的TestBench该用C++还是SystemC
  • docker方式启动Jenkins
  • Python训练营---DAY56
  • C#串口通讯实战指南
  • RAW图像简单可视化以及png、jpg的区别
  • 设计模式 - 抽象工厂
  • AI智能体——MCP 模型上下文协议
  • 71-Oracle Undo与Flashback管理(Guarantee设置)深度解析
  • vue3+ELInput无法输入的问题
  • 传输层协议UDP
  • 服务器中集群防御和单机防御分别是指什么?
  • (cvpr2025) DefMamba: Deformable Visual State Space Model
  • github常用插件
  • Java编程中的设计模式:单例模式的深度剖析
  • EEG分类攻略2-Welch 周期图
  • Python 数据分析与可视化 Day 5 - 数据可视化入门(Matplotlib Seaborn)
  • Spring Boot使用MCP服务器
  • Flask框架index.html里引用的本地的js和css或者图片
  • EEG分类 - Theta 频带 power
  • C++ Vector 基础入门操作
  • QML革命:下一代GUI开发的核心优势详解
  • 论文笔记:Answering POI-Recommendation Questions using TourismReviews
  • 单片机——浮点数转换4位数码管显示
  • 【笔记】在Cygwin上使用mintty连接wsl
  • 1.2、CAN总线帧格式