通过使用Stateflow图表设计人机界面逻辑
这个例子展示了如何建模图形用户界面的逻辑独立Stateflow®图表。独立的图表实现经典图表与MATLAB®作为行动语言语义。可以计划图通过使用MATLAB的全部功能,包括那些功能限制的代码生成模型®。金宝app有关更多信息,请参见为执行为MATLAB对象创建Stateflow图表。
可以执行一个独立的Stateflow图通过调用其输入事件和使用时间操作符。事件和定时器驱动型可执行工作流适用于设计的逻辑基础的人机接口(HMIs)和图形用户界面(ui)。
当你使用MATLAB程序设计师,回调函数的接口部件调用事件图表。
Stateflow图表,颞运营商和本地数据控制用户界面的属性。
有关如何使用MATLAB的更多信息创建图形用户界面,看到的使用应用程序开发应用程序设计师。
控制应用程序用户界面设计师
这个用户界面包含一个开关控制一盏灯。当开关的位置,灯光在两种模式之一,固体或闪烁,这取决于模式选项按钮的位置。你控制的闪烁,闪烁速度滑块移动。启动应用程序,在应用程序设计师将来发布,点击运行。
该文件sf_lamp_logic.sfx
定义了一个独立的Stateflow实现用户界面的逻辑图。图表输入事件(在
,从
,闪烁的
,固体
)和本地数据(延迟
和应用程序
)。图中的动作控制哪些部件可以从每个州。例如,行动从
状态导致灯部件,模式选项按钮,闪烁速度滑块在用户界面上出现暗了下来。
在在
状态,亚态固体
和闪烁的
表示两种操作模式。实现一个闪烁的灯,图表依赖时序逻辑操作符后
。当图表进入状态Blinking.Off
,该表达式(延迟,sec)后
即将离任的转换创建一个MATLAB定时器对象上执行的秒数后的图表。图表转换的状态Blinking.On
并创建另一个定时器对象触发转换回Blinking.Off
。图表连续两个状态之间的转换,你可以调整眨眼的速度通过改变本地数据延迟的值或过渡的闪烁模式通过调用输入事件固体
或从
。
结的历史在
状态保存最近活跃亚态信息,帮助用户界面返回到以前的操作模式,当你打开灯。
通过使用事件执行独立的图表
你可以执行独立的图的输入事件函数通过调用MATLAB命令窗口。Stateflow编辑器显示了这些命令的影响通过图表动画强调积极的状态和转换。
1。创建表对象l
并初始化的价值延迟
到0.5。这个值对应于一个闪烁的速度每秒一个flash(在0.5秒和0.5秒)。
L = sf_lamp_logic(延迟= 0.5);
2。打开灯。
(左)
3所示。切换到闪烁模式。
眨眼(左)
4所示。设定的值延迟
到0.25。这个值对应于两个闪烁的闪烁速度每秒(在0.25秒和0.25秒)。
L.delay = 0.25;
5。切换到坚实的模式。
固体(左)
6。把灯关掉。
(左)
7所示。删除表对象l
从MATLAB工作区。
删除(左)
独立的表连接到用户界面
之间建立双向连接用户界面和独立Stateflow图,打开窗口,并选择应用程序设计师代码视图。
1。在应用程序设计器窗口,创建一个私有财产lampLogic
存储Stateflow图表对象的句柄。
属性(访问=私人)lampLogic结束
2。创建一个StartupFcn
回调函数创建图表对象和其本地数据集应用程序
用户界面处理。分配图表对象句柄lampLogic
私人财产。
函数StartupFcn (app) app.lampLogic = sf_lamp_logic(延迟= 0.5,应用=应用);结束
3所示。创建一个CloseRequestFcn
回调函数删除图表对象当你关闭用户界面。
函数UIFigureCloseRequest(应用程序、事件)删除(app.lampLogic);删除(应用);结束
4所示。为每一个用户界面部件,添加一个回调函数,调用相应的事件的独立的图表。
ValueChangedFcn
开关部件的回调函数:
函数SwitchValueChanged(应用程序、事件)值= app.Switch.Value;开关低(值)情况下“关闭”(app.lampLogic);情况下“上”(app.lampLogic);结束结束
SelectionChangedFcn
回调函数模式按钮部件:
函数ModeButtonGroupSelectionChanged(应用程序、事件)selectedButton = app.ModeButtonGroup.SelectedObject;如果selectedButton = = app.SolidButton固体(app.lampLogic);其他的眨眼(app.lampLogic);结束结束
ValueChangedFcn
回调函数的闪烁速度滑块部件:
函数BlinkRateSliderValueChanged(应用程序、事件)app.lampLogic.delay =圆(0.5 / app.BlinkRateSlider.Value, 2);结束
运行用户界面时,你可以观察到的效果调整控制部件图画布和灯小部件。