动态掩码对话框
您可以为掩码块创建对话框,其外观会根据用户输入而变化。可以以这种方式更改的屏蔽对话框的特性包括:
参数控件的可见性——更改一个参数可能导致另一个参数的控件出现或消失。当控件出现或消失时,对话框将分别展开或缩小。
参数控件的启用状态——更改一个参数可以使另一个参数的控件启用或禁用输入。禁用的控件显示为灰色,以在视觉上表明它是禁用的。
参数值—更改掩码对话框参数会导致相关的掩码对话框参数设置为适当的值。
请注意
掩码参数的添加、删除或修改受到掩码回调的限制。
创建动态掩码对话框需要使用掩码编辑器和set_param
命令。具体来说,您可以使用Mask Editor来定义对话框的参数,包括静态和动态的。对于每个动态参数,您输入一个回调函数,该函数定义对话框如何响应对该参数的更改(参见执行回调代码).回调函数可以依次使用set_param
命令来设置影响对话框上其他控件的外观和设置的掩码参数(请参见创建动态掩码对话框).最后,保存包含屏蔽子系统的模型或库,以完成动态屏蔽对话框的创建。
查看相关示例,请参见创建动态掩码对话框.
显示参数
选中此选项(默认)时,选中的参数才会出现在掩码对话框中。
使参数
清除此选项将使所选参数的提示变为灰色,并禁用提示的编辑控件。
创建动态掩码对话框
这个例子展示了如何创建一个掩码对话块,它的外观会根据您的输入而变化。
您可以在此掩码对话框中设置两个参数。第一个参数是一个弹出式菜单,通过它你可以从三个增益值中选择一个:2
,5
,或用户定义的
.根据您在弹出菜单中选择的值,指定增益的编辑字段将出现或消失。
选择一个子系统,并在子系统块选项卡,在面具组中,单击创建面具.
选择参数&对话框面板上的蒙版编辑器。
拖放一个弹出参数并在对话框窗格。
在提示字段中,输入
获得
.在的名字字段中,输入
gainpopup
.在属性编辑器窗格中,清除评估所以Simuli万博1manbetxnk®使用为弹出窗口指定的文字值。
在类型的选择字段,单击编辑按钮,在弹出选项对话框中输入这三个值:
2 5用户自定义
中输入此代码对话框回调字段:
获取掩码参数值。这是一个字符向量的单元格%数组。maskStr = get_param(gcb,'gainpopup');弹出菜单是第一个掩码参数。%如果strcmp(maskStr(1),'U'), %在弹出窗口中选择% User-defined时设置这两个参数的可见性。set_param(gcb,' maskvisibility ',{'on';'on'}), else %当不选择User-defined时,关闭Value字段%的可见性。set_param(gcb,' maskvisibvisibility ',{'on';'off'}), %设置值字段中的字符向量等于增益弹出菜单中选择的%字符向量。% maskStr {2} = maskStr {1};set_param (gcb, editvalue maskStr);结束
拖放编辑参数并在对话框窗格。
在提示字段中,输入
价值
.在的名字字段中,输入
editvalue
.在属性编辑器窗格中,清除可见因此,Simul万博1manbetxink默认关闭该属性的可见性。
点击应用.
要打开掩码对话框,双击掩码子系统。
如果您选择
2
或5
随着获得, 万博1manbetxSimulink隐藏价值.如果您选择用户定义的
随着获得的价值是可见的。
设置嵌套的屏蔽块参数
如果低层被屏蔽子系统引用了由高层被屏蔽子系统定义的符号,并且试图在低层被屏蔽子系统中设置块的参数,则会出现无法解析的符号错误。因此,避免使用set_param
命令,设置位于被初始化的被屏蔽子系统中的屏蔽子系统中的块的参数。尝试是否较低级别的被屏蔽子系统引用较高级别的被屏蔽子系统定义的符号。
例如,假设被屏蔽的子系统a包含被屏蔽的子系统B,该子系统B包含增益块C,其增益参数引用B定义的变量。假设子系统a的初始化代码包含以下命令:
set_param([gcb '/B/C'], 'SampleTime', '-1');
模拟或更新包含a的模型会导致无法解决的符号错误。