华北水院第7章MATLAB图形界面设计.ppt_第1页
华北水院第7章MATLAB图形界面设计.ppt_第2页
华北水院第7章MATLAB图形界面设计.ppt_第3页
华北水院第7章MATLAB图形界面设计.ppt_第4页
华北水院第7章MATLAB图形界面设计.ppt_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB的GUI程序设计可以用两种方式实现,一种是借助GUI开发工具GUIDE,一种是利用m文件代码构建界面。采用GUIDE进行设计的方法直观方便,容易上手。 本章主要介绍利用GUIDE方法进行设计的步骤。,第7章MATLAB 图形界面设计,7.1 GUI设计工具Guide简介,MATLAB提供了用户图形界面开发程序GUIDE,支持可视化编辑。 它是一种基于事件或者说是事件驱动的程序(event driven),类似于方便易用的Visual Basic。,7.1.1 GUIDE的启动,可以如下不同方式启动GUIDE: 1. 在命令窗口提示符下输入guide; 2. 在工具栏选打开; 3.

2、在Start菜单中选MATLAB ; 4. MATLAB File 菜单中选New GUI。,空白界面,有控件的模板界面,有轴对象和菜单的模板界面,标准询问窗口,7.1.2 GUI界面的创建,用户创建新的GUI,也可打开已有的GUI。创建界面时还可在模板基础上进行,在选择GUI模板时,启动界面右侧提供了预览。,以“GUI with axes and menu”模板创建的GUI初始界面。,GUIDE工具栏上的工具按钮,对象浏览器(Object Browser)用于获得当前Matlab图形用户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器

3、;,布局编辑器(Layout Edtor)在图形窗口中创建及布置图形对象。布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,用guide命令可以启动,或在启动平台窗口中选择GUIDE来启动布局编辑器;,几何排列工具(Alignment Tool)调整各对象相互之间的几何关系和位置;,属性查看器(Property Inspector)查询并设置属性值;,菜单编辑器(Menu Editor)创建、设计、修改下拉式菜单和快捷菜单;,Tab顺序编辑器(Tab Order Editor)用于设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。,用户控件,对象选择按钮,用来选取

4、工作区的控件。 单功能按键,按下操作代表一定功能实现。 双位按键,代表“开”“关”两种状态。 互斥选择按钮,多个选项互斥选择时使用。 互容选择按钮,同时选中多个选项时使用。 编辑文本框,可以自由输入字符和字符串 静态文本框,用于显示注释,不可编辑。 滑动块,利用游标滑动,可以获取不同值。 控件区域框,用于对控件区域进行标识。 列表框,提供多个互容的可供选择选项。 弹出框,有多个选项,只能选择其中一项。 轴对象,用来显示图形。,按钮(Push Buttons):执行某种预定的功能或操作;,开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,

5、并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容;,单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;,复选框(Check Boxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;,文本编辑器(Editable Texts):用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等操作;,静态文本框(Static Texts):仅用于显示单行的说明文

6、字;,滚动条(Slider): 可输入指定范围的数量值;,边框(Frames):在图形窗口圈出一块区域;,列表框(List Boxes):在其中定义一系列可供选择的字符串;,弹出式菜单(Popup Menus): 让用户从一列菜单项中选择一项作为参数输入;,此外还有坐标轴(Axes), 用于显示图形和图象。,修改控件属性,每个控件不可能是完全符合界面设计要求的,需要对其属性进行设置,以获得所需界面显示效果。,可以通过双击该控件,或利用下拉菜单View: Property Inspector打开控件属性对话框。 例如右图是“+”按钮的属性列表。,下面对各控件的主要属性进行一下说明。 1)双击设计

7、工作区空白部分,打开整个图形窗属性框。 MunuBar: none %图形窗是否使用标准菜单 Name: caculator %图形窗名称 Resize: off %图形窗不能缩放 Tag: mainWnd %图形窗的句柄handles.mainWnd 2) 静态文本编辑框的属性设置。 FontSize: 15%字体大小 FontUnits: points%字体大小的度量单位 HorizontalAlignment: Center%对齐方式 String: Expression%待显示的字符 Tag: text1%静态文本框句柄handles.text1 Units: points%文本框度量

8、单位,Units或FontUnits可选择:inches(英寸),centimeters (厘米), normalized(按比例缩放),points(点阵), pixels (像素), characters(字符)。如果选择normalized,那么当resize设为on时,控件或字体大小随着整个窗口的缩放而改变。 水平对齐方式 Horizontal Alignment可以是left, center, right。 控件句柄Tag有默认值,建议修改为带有具体含义的字符串,以增加程序可读性和方便回调函数调用。,3)可编辑文本框的属性设置。 String: 0%初始状态下显示数字0 Tag: p

9、Exp%可编辑文本框的句柄 其它和静态文本框相同 4)单功能按钮属性设置。以按钮“1” 为例 String: 1 Tag: p1 其它和静态文本框相同。,界面激活 保存静态界面后,利用工具栏上的运行按钮激活该界面。激活后可以看到两个同名文件:m和fig。 m文件在M文本编辑器中打开, fig文件显示为操作界面,但是无法实现任何功能,需要编写回调函数。 精细调整 利用对齐工具,排列控件的位置,使控件的大小、位置更加协调。,精细调整 利用对齐工具,排列控件的位置,使控件的大小、位置更加协调。,回调函数,在M文本编辑器中打开m文件,可以看到自动生成的回调函数,该函数的命名利用对象句柄进行区分,没有任

10、何执行语句。 回调函数:Tag_Callback(hObject, eventdata, handles),通过加入自己的处理语句,可以实现所需功能。 其中hObject是控件的句柄;eventdata是备用参数,目前没有定义;handles是用户数据,本身是一个结构数组,存放了当前窗口的所有对象的句柄,包括图形窗本身、所有控件和菜单的句柄。并且可以增加一些域用来传递用户数据。 利用guidata( H, handles )可以更新 H 的用户数据。,7.2 GUI程序设计示例,本节通过示例,演示MATLAB的GUI程序设计。,“Hello World”程序的设计,下面以一个类似于学习其它程序

11、设计的第一个程序“Hello World”为例,讲解GUIDE的有关知识。 程序的目标是当按下按钮时,由文本控件显示“Hello World”。,显示控件名称 的设置界面,对界面左侧的控件如果不够熟悉的话,可以通过FilePreferences选项,选中“Show names in component palette”,GUI设计界面在显示控制图标的同时,还显示控件名称,1. “Hello World”程序界面设计 2. “Hello World”程序的设计 3. 程序测试运行,GUI设计中的界面设计部分比较容易。在窗口上添加一个按钮控件(Push Button)和一个文本控件(Static

12、Text)。可双击控件调出属性编辑器进行其属性设置。,设按钮控件的“String”属性为“问候”,“Tag”属性为“helloBt”,见右图,按钮属性设置,设置文本控件的“String”属性为空,表示初始状态下不显示任何信息,“Tag”属性为“helloStr”,为显示清楚,设其“FontSize”属性为“28”。见右图,文本控件属性设置,“Tag”属性设置要唯一,因为“Tag”属性是唯一标识控件的。 至此,我们的界面设计工作完成。 保存时,会生成2个文件,helloworld.fig,helloworld.m。,此外可通过ToolsMenu Editor进行类似于Windows程序的菜单设计

13、。编辑窗口见左图,效果见右图。,菜单设计的编辑窗口,菜单效果图,利用菜单编辑器可创建、设置、修改下拉式菜单和快捷菜单。选择 Tools 菜单的 Menu Editor.子菜单,可打开菜单编辑器。,菜单编辑器(Menu Editor),菜单可通过编程实现,从GUI设计窗口的工具栏上选择Menu Editor命令按钮,打开菜单编辑程序。,菜单编辑器包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分隔线(Separator above this item)、是否在菜单前加上选中标记(Item is

14、 checked)、调用函数(Callback)。,菜单编辑器左上角的第一个按钮用于创建一级菜单项。第二个按钮用于创建一级菜单的子菜单。,菜单编辑器左下角有两个按钮,选择第一个按钮可创建下拉式菜单。选择第二个按钮可创建Context Menu菜单。选择它后,菜单编辑器左上角的第三个按钮就会变成可用,单击它就可以创建Context Menu主菜单。在选中已经创建的Context Menu主菜单后,可以单击第二个按钮创建选中的Context Menu主菜单的子菜单。与下拉式菜单一样,选中创建的某个Context Menu菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以设置、修改菜单属性。,菜单

15、编辑器左上角的第四个与第五个按钮用于对选中的菜单进行左移与右移,第六与第七个按钮用于对选中的菜单进行上移与下移,最右边的按钮用于删除选中的菜单。,按照要求,我们可以给按钮添加动作,即给它编写一个回调函数(Callback)。 右键单击按钮,选择View CallbacksCallback自动打开helloworld.m文件并指向该回调函数。 根据需要为其添加语句。程序将句柄集handles的helloStr(即文本控件)“String”属性设置为“Hello World”,即完成了设计要求。,下面这段程序的意思是当点击按钮时,即由程序设置文本控件的“String”属性值为“Hello Worl

16、d”。 function helloBt_Callback(hObject, eventdata, handles) set(handles.helloStr,String,Hello World !);,注意回调函数的概念,它指的是在对象的某一个事件发生时,MATLAB内部机制允许自动调用的函数。 其几个参数的意思分别为 hObject表示当前窗口的句柄; eventdata表示事件代码,为保留 handles是该窗口中的所有句柄的集合。 回调函数有的是针对窗口而言的,有的是对具体控件而言的,学会回调函数的编写有助于高效编写MATLAB GUI程序,在程序编辑窗口运行测试,或在命令窗口键入程

17、序名称“helloworld”,即可运行。如下图:,注意: 当不小心将helloworld.fig关掉后,再次编辑需要重新打开。其方法可以通过FileNewGUIOpen Existing GUI来打开。 如按照一般理解选择FileOpen项的话,只能打开其运行窗口而不可编辑。,例10 使用Push Button按钮与静态文本框设计GUI,在窗口中显示单击按钮次数。,(1) 在界面上安装一个命令按钮和一个静态文本框,(2) 使用对象的属性窗口设置控件的属性,打开该GUI的 m 文件,文件中已经自动生成代码。找到函数 function pushbutton1_Callback(hObject,

18、eventdata, handles) 在这个函数名称下面写入如下程序段:,persistent c if isempty(c) c=0 end c=c+1; str=sprintf(Total Clicks: %d,c); set(handles.text1,String,str);,保存程序后,单击Click按钮,则在什么的文本框中显示单击次数。,例11 制作一个简易的加减法计算器。,(1) 在界面上安装两个编辑文本框、一个静态文本框与两个命令按钮,(2) 使用对象的属性窗口设置控件的属性,打开该GUI的 m 文件ex11.m,在函数pushbutton1_Callback 与 pushb

19、utton2_Callback 中加入代码,如下所示:,function pushbutton1_Callback(hObject, eventdata, handles) s1=str2double(get(handles.edit1,String) s2=str2double(get(handles.edit2,String) set(handles.text1,String,s1+s2);,function pushbutton2_Callback(hObject, eventdata, handles) s1=str2double(get(handles.edit1,String) s

20、2=str2double(get(handles.edit2,String) set(handles.text1,String,s1-s2);,例12 使用3个单选钮控制静态文本框的背景颜色。,function radiobutton1_Callback(hObject, eventdata, handles) set(handles.text1,BackGroundColor,r) function radiobutton2_Callback(hObject, eventdata, handles) set(handles.text1,BackGroundColor,g) function

21、radiobutton3_Callback(hObject, eventdata, handles) set(handles.text1,BackGroundColor,b),function slider1_Callback(hObject, eventdata, handles) v=get(handles.slider1,Value); str=sprintf(%.2f,v); set(handles.text1,String,str);,例13 使用滚动条。,例14 制作一个根据密度与体积计算质量的简易计算器。,(1) 在界面上布置控件对象。,(2) 使用对象的属性窗口设置控件的属性。

22、,例15 使用程序把基本控件安装在图形窗口上。,h1=uicontrol(style,edit,TooltipString,Edit Text) h2=uicontrol(style,checkbox,Position,90,20,30,20,TooltipString,Checkbox) h3=uicontrol(style,listbox,Position,150,20,40,20,TooltipString,Listbox) h4=uicontrol(style,pushbutton,Position,210,20,30,20,TooltipString,Pushbutton) h5=u

23、icontrol(style,radiobutton,Position,260,20,30,20,TooltipString,Radiobutton) h6=uicontrol(style,slider,Position,310,20,30,20,TooltipString,Slider) h7=uicontrol(style,text,Position,370,20,30,20,TooltipString,Static Text) h8=uicontrol(style,toggle,Position,430,20,30,20,TooltipString,Togglebutton),上面程序虽

24、然实现了控件的安装,但是,还不能完成具体的功能。如果要完成特定的功能,需要加入其他语句。,例16 在图形窗口底部安装一个命令按钮、一个可编辑文本框、一个静态文本框。针对命令按钮(pushbutton)编写程序,使程序运行后,点击该命令按钮,便随机绘制出一些折线;同时可编辑文本框背景色变为蓝色,静态文本框背景色变为红色。,h1=uicontrol(style,pushbutton,Position,280,0,50,20) set(h1,String,PUSH,Callback,fun),主程序只创建安装了一个Pushbutton按钮,然后,在set语句中使用Callback属性调用函数fun。

25、,主程序设计如下:,function fun plot(rand(3,5) h2=uicontrol(style,edit,TooltipString, Edit Text,Position,80,0,30,20) h3=uicontrol(style,text,Position, 440,0,30,20,TooltipString,Static Text) set(h2,BackGroundColor,0 0 1) set(h3,BackGroundColor,1 0 0),函数fun代码如下:,在函数fun中除了绘图之外,还制作了一个Edit Text、一个Static Text,并且把这

26、两个控件的背景色设置为蓝色 0 0 1与红色1 0 0。,例17 制作依附于某对象的弹出式菜单。,m=uicontextmenu; subplot(1,3,1) h1=line(1,2,2,2,LineWidth,8,UIContextMenu,m) c1=subplot(1,3,2);line(1 2,1 3); c2=subplot(1,3,3);plot(rand(2); uimenu(m,Label,line,Callback,c1); uimenu(m,Label,plot,Callback,c2);,编写程序如下:,程序运行后,先绘制出右图第一个图所示图形,在蓝色宽条上单击鼠标右键

27、,出现菜单,菜单上有两个选项line与plot,选择line绘制出右图第二个图所示线段;选择plot绘制出右图第三个图所示两条(随机)线段。,布置控件:一个坐标系、一个文本框、一个复选框,一个按钮; 定义文本框的属性:String-简单设计示例,FontName-隶书,FontSize22; 定义坐标系: Visibleoff; 定义按钮属性: String开始绘图,FontName, ForegroundColor, FontSize, BackgroundColor,Callback-surf(peaks(30); 定义复选框: String3D旋转,Callbackrotate3d。,例

28、18 用于绘图和图形旋转的GUI。,布局编辑器中编辑完 成的图形用户界面,运行所创建的图 形用户界面程序,点击按钮的结果,选择三维旋转功 能后对图形进行 的旋转操作,例19 设计一个简单信号分析仪的程序,要求根据输入的两个频率和时间间隔,计算函数 x=sin(2f1t)+sin(2f2t) 的值,并对函数进行快速傅立叶变换,最后分别绘制时域和频域的曲线。,(一)设计图形界面,设计步骤:,在布局编辑器中布置控件:本例中使用了2个坐标系、3个文本编辑框、1个按钮和3个静态文本框; 使用几何位置排列工具对控件的位置进行调整: 设计控件的属性:为显示美观,首先将文本编辑框和静态文本框的字号分别设置为2

29、0和16,将3个静态文本框的标题分别改为“频率1”、“频率2”和“时间”,将按钮的标题改为“绘图”。 设置其他绘图属性。如设置主窗口的标题为“信号分析仪”。,上述步骤基本完成了图形界面的设计,如下图所示:,上述图形界面设计运行后显示的图形如下:,其设置如右图所示,(二)设置控件的标识,控件的标识(Tag)用于对各控件的识别。每个控件在创建时都会由开发环境自动产生一个标识,在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置一个新的标识。,(三)编写代码,GUI图形界面的功能,还是要通过一定的设计思路和计算方法,由特定的程序来实现。为了实现程序的功能,还需要在运行程序前编写一些代码,完成程序

30、中变量的赋值、输入输出、计算及绘图等工作。,本例设置第一个坐标轴的标识为:frequency_axes, 用于显示频域图形; 第二个坐标轴的标识为:time_axes, 用于显示时域图形。三个文本编辑框的标识为f1_input, f2_input, t_input,分别用于输入两个频率和自变量时间的间隔。由于不需要返回3个静态文本框和按钮的值,这些控件的标识可以使用缺省值。,(1) 从GUI获得用户输入的数据。本例中输入的3个数据分别为频率1、频率2和时间间隔。 f1=str2double(get(handles.f1_input,String); f2=str2double(get(hand

31、les.f2_input,String); t=eval(get(handles.t_input,String);,1. 设置对象的初始值,分别设置三个文本编辑框的初始值为: f1_input=20 f2_input=50 t_input=0:0.001:0.5,2. 编写代码,为按钮的调用函数编写代码,这段代码放在按钮的调用函数pushbutton1_Callback()中,代码包括以下部分:,(2)计算数据。计算函数值,按指定点进行快速傅立叶变换,并计算频域的幅值和频域分辨率。 x=sin(2*pi*f1*t)+sin(2*pi*f2*t); y=fft(x,512); m=y.*conj

32、(y)/512; f=1000*(0:256)/512; (3)在第一个坐标轴中绘制频域曲线。 axes(handles.frequency_axes) plot(f,m(1:257) set(handles.frequency_axes,XminorTick,on) grid on (4)在第二个坐标轴中绘制时域曲线。 axes(handles.time_axes) %选择适当的坐标轴 plot(t,x) set(handles.time_axes,XminorTick,on) grid on,3. 运行程序,本节GUI 实现三维图形的绘制。预创建界面中应包含一个绘图区域;一个面板,其中包含

33、三个绘图按钮,分别实现表面图、网格图和等值线的绘制;一个弹出菜单,用以选择数据类型,并且用静态文本进行说明。其草图如图所示。,2020年9月20日,第61页,点击工具栏中的 GUIDE 图标,启动 GUIDE,系统打开界面如图所示。 选择新建 GUI 标签,并选择新建空的 GUI,选中下面的保存选项,输入文件名,得到结果如图所示。 该窗口中包括菜单栏、控制工具栏、GUI 控件面板、GUI 编辑区域等,在 GUI 编辑区域右下脚,可以通过鼠标拖曳的方式改变 GUI 界面的大小。,2020年9月20日,第62页,向界面中添加控件,首先向界面中添加按钮。用鼠标点击 Push Button,并拖曳至

34、GUI 编辑区,如图。 在该按钮上点击右键,选择 Duplicate,将该按钮复制两次,并移动到合适的位置,得到结果如图。 然后将这三个按钮添加到面板中。在编辑区的右侧添加面板,并将三个按钮移动到面板中,得到结果如图。 下面继续向其中添加静态文本、弹出菜单和绘图区,得到结果如图 。,2020年9月20日,第63页,设置控件属性,点击工具栏中 Property Inspector,打开属性编辑器。设置各个控件的属性,如设置按钮的属性,设置第一个按钮的显示文字为 Surf,标签名为 surf_pushbutton, 如图。 设置其他控件的属性,得到的结果如图。 点击工具栏中的绿色箭头,运行该 GU

35、I,结果如图。,编写响应函数,创建 GUI 时系统已经为其自动生成 M 文件,该文件中包含 GUI 中控件对应的响应函数及系统函数等。 首先编写数据生成函数。 在 GUI 向导中点击 M-file Editor,打开 M 文件编辑器。编辑器中为该 GUI 对应的 M 文件。点击函数查看工具显示其中的函数,选择 GUIPlot_OpeningFcn 函数,如图。,2020年9月20日,第64页,2020年9月20日,第65页,该函数中已有部分内容,现在其中添加数据生成函数。添加后该函数的内容为: % - Executes just before GUIPlot is made visible.

36、function GUIPlot_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arg

37、uments to GUIPlot (see VARARGIN) % Create the data to plot. handles.peaks=peaks(35); handles.membrane=membrane; x,y = meshgrid(-8:.5:8);,2020年9月20日,第66页,r = sqrt(x.2+y.2) + eps; sinc = sin(r)./r; handles.sinc = sinc; % Set the current data value. handles.current_data = handles.peaks; contour(handles

38、.current_data) % Choose default command line output for GUIPlot handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes GUIPlot wait for user response (see UIRESUME) % uiwait(handles.figure1); 该函数首先生成三组数据,并设置初始数据为 peaks 数据,且初始图形为等值线。修改该函数后再次运行 GUI,得到结果如图 。,2020

39、年9月20日,第67页,继续修改按钮及弹出菜单的响应函数。用户可以通过 M文件编辑器中的函数查看工具查找相应函数,或在GUI编辑器中右键点击相应控件,选择View Callbacks中的Callback,系统自动打开M文件编辑器,并且光标位于相应的函数处,如图。,2020年9月20日,第68页,弹出菜单的响应函数: % - Executes on selection change in data_pop_up. function data_pop_up_Callback(hObject, eventdata, handles) % hObject handle to data_pop_up (

40、see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Determine the selected data set. str = get(hObject, String); val = get(hObject,Value); % Set current data to the selected data set. switch strval;,2020年9月20日,第6

41、9页,case Peaks % User selects peaks handles.current_data = handles.peaks; case Membrane % User selects membrane handles.current_data = handles.membrane; case Sinc % User selects sinc handles.current_data = handles.sinc; end % Save the handles structure. guidata(hObject,handles) % Hints: contents = ge

42、t(hObject,String) returns data_pop_up contents as cell array % contentsget(hObject,Value) returns selected item from data_pop_up 该函数首先取得弹出菜单的 String 属性和 Value 属性,后通过分支语句选择数据。,2020年9月20日,第70页,三个按钮的响应函数分别为: % - Executes on button press in surfpushbutton. function surfpushbutton_Callback(hObject, event

43、data, handles) % hObject handle to surfpushbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Display surf plot of the currently selected data. surf(handles.current_data);,2020年9月20日,第71页,% - Executes on

44、 button press in meshpushbutton. function meshpushbutton_Callback(hObject, eventdata, handles) % hObject handle to meshpushbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Display mesh plot of the curr

45、ently selected data. mesh(handles.current_data);,2020年9月20日,第72页,% - Executes on button press in contourpushbutton. function contourpushbutton_Callback(hObject, eventdata, handles) % hObject handle to contourpushbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % h

46、andles structure with handles and user data (see GUIDATA) % Display contour plot of the currently selected data. contour(handles.current_data);,2020年9月20日,第73页,再次运行该 GUI,得到最后的结果。,控制系统典型环节的演示程序,1.程序功能描述 2.程序界面设计 3.程序代码设计 4.程序测试运行,1.程序功能描述 进行控制系统典型环节的演示,包括了典型环节运行效果的演示与代码的展示。也可以在代码区输入绘制曲线语句并通过点击定制曲线按钮绘

47、制曲线。,2.程序界面设计 根据程序功能要求,添加不同控件,并设置控件各自的属性。 (1) Axes控件作用为显示图形,典型环节的阶跃响应曲线及定制曲线都在此处进行显示。“Tag”属性设为myAxes。 (2) Panel控件用来盛放其它控件,这里盛放的是代码区。“Tag”属性设为uipanel。“Title”属性设为空。,(3) Edit Text控件用于输入和显示文本。此处作为代码区,主要作用为展示典型环节的代码、输入用户定制的曲线代码。 “Tag”属性设为: strCode。 “String”属性设为: Please input command for example: x=0:0.1:

48、4*pi; y=sin(x); 这为用户定制曲线提供了一个例程。,(4) Static Text控件作为标识,提示位于其下方的ListBox控件选项是进行典型环节演示。“Tag”属性设为txtDemo,“String”属性设为典型环节演示。 (5) ListBox控件类似于一组复选框,用户可从中选择不同选项。 “Tag”属性设为: lstBox “String”属性设为: 比例环节 惯性环节 比例微分环节 比例积分环节,表示此列表共有4项内容即4个典型环节可选。,(6) Push Button控件表现为一个按钮。本例中使用了两个此控件。 一个用于定制曲线的绘制。 用户在代码区输入绘制曲线语句后

49、,点击此按钮进行曲线绘制。“Tag”属性设为btnDraw,“String”属性设为定制曲线,“TooltipString”属性设为在代码区中输入曲线参数,绘制任意曲线。这样当用户将光标置于按钮上时,会有相应提示信息。 一个用于关闭运行窗口。 “Tag”属性设为btnClose, “String” 属性设为关闭, “TooltipString”属性设为关闭窗口。,设定完成的界面草图如图,至此,本例所需的控件已设置完毕。在最初按照草图添加部署了所有的控件后,往往不会排列得很整齐。此时可根据需要进行控件的排列。,要将位于窗口右侧的4个控件竖排整齐,则可在窗口选ToolAlign Objects弹出的窗口中进行选择。,3.程序代码设计 根据要求,在选择典型环节时需要设置回调函数。此外,对两个按钮控件也要设置回调函数。 回调函数的生成在前一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论