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

发布于:2025-06-24 ⋅ 阅读:(10) ⋅ 点赞:(0)

参考教程: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函数。


网站公告

今日签到

点亮在社区的每一天
去签到