Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

以编程方式控制封装

Simulink® 定义了一组有助于设置和编辑封装的参数。要从 MATLAB® 命令行设置和编辑封装,您可以使用 Simulink.MaskSimulink.MaskParameter 类方法。也可以使用 get_paramset_param 函数来设置和编辑封装。但是,由于这些函数使用的分隔符不支持 Unicode®(非英文)字符,建议您使用 Simulink.Mask 方法和 Simulink.MaskParameter 类方法来控制封装。

使用 Simulink.MaskSimulink.MaskParameter

使用 Simulink.MaskSimulink.MaskParameter 类的方法执行下列封装操作:

  • 创建、复制和删除封装

  • 创建、编辑和删除封装参数

  • 确定拥有封装的模块

  • 获取为封装定义的工作区变量

  1. 在此示例中,使用了 Simulink.Mask.create 方法来创建模块封装:

     maskObj = Simulink.Mask.create(gcb);
     maskObj =  
          Simulink.Mask handle
          Package: Simulink
          Properties:
                        Type: ''
                 Description: ''
                        Help: ''
              Initialization: ''
              SelfModifiable: 'off'
                     Display: ''
                   IconFrame: 'on'
                  IconOpaque: 'on'
        RunInitForIconRedraw: 'off'
                  IconRotate: 'none'
                  PortRotate: 'default'
                   IconUnits: 'autoscale'
                  Parameters: []
      Methods, Events, Superclasses
  2. 在此示例中,使用 Simulink.Mask.get 方法将封装对象赋给变量 maskObj

    maskObj = Simulink.Mask.get(gcb)
    maskObj =  
        Simulink.Mask handle
        Package: Simulink
        Properties:
                        Type: ''
                 Description: ''
                        Help: ''
              Initialization: ''
              SelfModifiable: 'off'
                     Display: ''
                   IconFrame: 'on'
                  IconOpaque: 'on'
        RunInitForIconRedraw: 'off'
                  IconRotate: 'none'
                  PortRotate: 'default'
                   IconUnits: 'autoscale'
                  Parameters: [1x1 Simulink.MaskParameter]
         Methods, Events, Superclasses

有关其他封装操作的示例,例如创建和编辑封装参数以及复制和删除封装,请参阅 Simulink.MaskSimulink.MaskParameter

使用 get_paramset_param

set_paramget_param 函数具有用于设置和控制封装的参数。您可以使用这些函数,基于从 MATLAB 命令行传递的值设置模型或库中任何模块的封装:

set_param(gcb,'MaskStyleString','edit,edit',...
'MaskVariables','maskparameter1=@1;maskparameter2=&2;',...
'MaskPromptString','Mask Parameter 1:|Mask Parameter 2:',...
'MaskValues',{'1','2'});
get_param(gcb,'MaskStyleString');
set_param(gcb,'MaskStyles',{'edit','edit'},'MaskVariables',...
'maskparameter1=@1;maskparameter2=&2;','MaskPrompts',...
{'Mask Parameter 1:','Mask Parameter 2:'},...
'MaskValueString','1|2'); 
get_param(gcb,'MaskStyles');

其中

  • | 用来分隔封装参数的单个字符向量值。

  • @ 指示参数字段为计算字段。

  • & 指示参数字段不是计算字段,而是指定为字符向量。

注意

  • 当您使用 get_param 获取封装参数的 Value 时,Simulink 返回上次使用封装对话框应用的值。您已在封装对话框中输入但尚未应用的值不会在您使用 get_param 命令时反映出来。

  • 要以编程方式指定封装参数的值,建议在 mask parameter 上使用 set_param 命令,而不是在 MaskValues 上使用 set_param

对于 R2014a 之前的版本,要以编程方式控制封装属性,请参阅封装参数

以编程方式创建封装参数和对话框

此示例说明了如何创建此简单的封装对话框,向对话框中添加控件,并更改控件的属性。

  1. 为您在模型中选择的模块创建封装。

    maskobj = Simulink.Mask.create(gcb);

  2. 要自定义对话框并使用选项卡而不是默认组,请删除 Parameters 组框。

    maskobj.removeDialogControl('ParameterGroupVar');

    Simulink 保留子对话框控件(本例中的两个复选框),甚至在您删除包含它们的 ParametersGroupVar 组时也是如此。这些控制项是无法使用对话框控件方法删除的参数。

    您可以使用属于 Simulink.Mask 类的 removeAllParameters 等方法删除参数。

  3. 创建一个选项卡容器,并获取其句柄。

    tabgroup = maskobj.addDialogControl('tabcontainer','tabgroup');

  4. 在此选项卡容器中创建选项卡。

    tab1 = tabgroup.addDialogControl('tab','tab1');
    tab1.Prompt = 'First';
    maskobj.addParameter('Type','checkbox','Prompt','Option 1',...
      'Name','option1','Container','tab1');
    maskobj.addParameter('Type','checkbox','Prompt','Option 2',...
      'Name','option2','Container','tab1');
    
    tab2 = tabgroup.addDialogControl('tab', 'tab2');
    tab2.Prompt = 'Second';
    tab3 = tabgroup.addDialogControl('tab','tab3');
    tab3.Prompt = 'Third (invisible)';

    使第三个选项卡不可见。

    tab3.Visible = 'off'
    
    tab3 = 
    
      Tab with properties:
    
                  Name: 'tab3'
                Prompt: 'Third (invisible)'
               Enabled: 'on'
               Visible: 'on'
        DialogControls: []

您可以使用 Simulink.dialog.Control 命令更改对话框中参数的位置和其他属性。

例如,要更改对话框布局选项,请考虑添加了名为 Parameter2 的 Popup 参数的 Gain 模块。要设置参数的对话框布局选项,可以使用 Simulink.dialog.parameter.Popup 类的实例。以下代码显示如何在对话框布局中设置提示位置:

a = Simulink.Mask.get('testmodel/Gain');
d = a.Parameters(2).DialogControl;

这会列出弹出参数 'Parameter2' 的所有属性:

d = 

  Popup with properties:

                 Name: 'Parameter2'
       PromptLocation: 'top'
                  Row: 'new'
    HorizontalStretch: 'on'
              Tooltip: 'Test'

现在,要设置 PromptLocation 属性,请使用命令:

d.PromptLocation = 'left'

这会将 PromptLocation 设置为 'left。可用值为 'left''top'。输出确认将 PromptLocation 属性值更改为 left

d = 

  Popup with properties:

                 Name: 'Parameter2'
       PromptLocation: 'left'
                  Row: 'new'
    HorizontalStretch: 'on'
              Tooltip: 'Test'

有关对话框控件及其属性的详细信息,请参阅 Simulink.dialog.Control

相关主题