此示例示出了如何将一个图形用户界面的逻辑模型独立Stateflow®图表英寸独立图表实现经典图表语义与MATLAB®的动作语言。您可以通过使用MATLAB的全部功能,包括在限制的Simulink代码生成这些函数的图形程序。金宝app欲了解更多信息,请参阅对于执行创建Stateflow图的MATLAB对象。
您可以通过调用它的输入事件并使用时间运营商执行一个独立的Stateflow的图表。该事件 - 和定时器驱动的执行的工作流是适合于底层设计人机界面(HMI)和图形用户界面(UI)的逻辑。
当您使用MATLAB应用程序设计,从回调的接口部件的功能调用图表中的事件。
在状态流图表,时间运营商和本地数据控制用户界面的属性。
有关如何使用MATLAB创建图形用户界面的详细信息,请参阅开发应用程式使用App设计师(MATLAB)。
该用户界面包含一个通断开关,其控制的灯。当开关处于打开位置时,所述灯中的两种模式之一点亮,固体或闪烁,这取决于模式选项按钮的位置。您可以控制通过移动闪烁频率滑块闪烁的速度。
文件sf_lamp_logic.sfx
限定一个独立的状态流图表,用于实现用户接口的逻辑。该图表具有输入事件(上
,关闭
,BLINKING
和固体
)和本地数据(延迟
和应用
)。在图表控制哪些窗口小部件的操作是从每一个状态访问。举例来说,在行动离
状态使灯部件,所述模式选项按钮和闪烁速率滑块在所述用户接口显示为灰色。
在里面上
状态时,子状态固体
和闪烁
表示操作的两种模式。为了实现一个闪烁灯,图表依赖于时间逻辑运算符后
。当图表进入的状态Blinking.Off
, 表达方式后(延迟,秒)
在输出过渡创建若干秒之后执行图的MATLAB计时器对象。图表然后过渡到状态Blinking.On
和创建另一个计时器对象触发过渡回Blinking.Off
。虽然图表在两种状态之间不断转换,你可以通过改变本地数据延迟的值调整闪烁的速度或通过调用输入事件过渡闪烁模式的出固体
要么关闭
。
在历史结上
状态蜜饯上最近最活跃的子状态,使用户界面返回操作的先前的模式,当你打开灯信息。
您可以通过调用MATLAB命令窗口的输入事件函数执行独立的图表。的状态流编辑器显示这些命令中的通过图表动画突出活性状态和转移的影响。
1.打开状态流编辑器中的独立的图表。
编辑sf_lamp_logic.sfx
2.创建图表对象大号
和初始化的值延迟
至0.5。此值对应于每秒闪烁一次的闪烁速率。
L = sf_lamp_logic('延迟',0.5);
3.打开灯泡。
ON(L)
4.切换到闪烁模式。
闪烁(L)
5.设置的值延迟
0.25。此值对应于每秒两个闪烁的闪烁速率。
L.delay = 0.25;
6.切换到固体模式。
固体(L)
7.关闭灯。
OFF(L)
8.删除图表对象大号
从MATLAB工作区。
删除(L)
为了建立用户接口和独立状态流图表之间的双向连接,打开App设计器窗口,并选择代码视图。
1.在应用程序设计器窗口,创建一个私有财产lampLogic
存储句柄状态流图表对象。
性能(存取=私人)lampLogic结束
2.创建StartupFcn
创建图表对象并设置其本地数据回调函数应用
用户界面的手柄。图表对象句柄分配给lampLogic
私人财产。
%代码组件创建后执行功能StartupFcn(APP)app.lampLogic = sf_lamp_logic('延迟',0.5%,“应用”,应用程序);结束
3.创建CloseRequestFcn
回调函数,当您关闭用户界面,删除图表对象。
%关闭请求函数:UIFigure功能UIFigureCloseRequest(应用程序,事件),删除(app.lampLogic);删除(APP);结束
4.对于用户界面窗口小部件中的每一个,添加调用独立图表上的适当的事件的回调函数。
ValueChangedFcn
回调开关插件功能:
功能SwitchValueChanged(应用程序,事件)值= app.Switch.Value;开关降低(值)案件“关”OFF(app.lampLogic);案件'上'ON(app.lampLogic);结束结束
SelectionChangedFcn
回调模式按钮控件功能:
功能ModeButtonGroupSelectionChanged(应用程序,事件)selectedButton = app.ModeButtonGroup.SelectedObject;如果app.SolidButton == selectedButton固体(app.lampLogic);其他闪烁(app.lampLogic);结束结束
ValueChangedFcn
回调闪烁频率滑块功能部件:
功能BlinkRateSliderValueChanged(应用程序,事件)app.lampLogic.delay =圆形(0.5 / app.BlinkRateSlider.Value,2);结束
当您运行用户界面,你可以观察到调整的图表画布,而且在灯插件的控制部件的作用。