主要内容

Simulink.interface.Dictionary

管理接口字典

自 R2022b 起

    在 R2023b 中,引入了数据字典的“架构数据”部分。当管理接口、数据类型、常量和软件寻址方法时,请考虑改用 Simulink.dictionary.ArchitecturalData 编程接口。有关详细信息,请参阅Programmatically Manage AUTOSAR Architectural Data

    说明

    Simulink.interface.Dictionary 对象提供帮助您管理接口字典的方法。

    创建对象

    要创建一个 Simulink 接口字典并返回表示该字典的对象,请使用 Simulink.interface.dictionary.create 函数。

    dictName = 'MyInterfaces.sldd';
    dictAPI = Simulink.interface.dictionary.create(dictName);

    如果您已创建一个接口字典,可以使用 Simulink.interface.dictionary.open 函数创建一个 Simulink.interface.dictionary 对象来表示该现有字典。

    dictAPI = Simulink.interface.dictionary.open('MyInterfaces.sldd');

    属性

    全部展开

    字典中定义的数据类型,指定为 DataType 对象数组,具有属性:NameOwner

    与字典关联的 SLDD 文件的文件名。

    字典中定义的接口,指定为 DataInterfaceServiceInterface 对象数组,具有属性:NameDescriptionElementsOwner

    对象函数

    addAliasType将 Simulink 别名类型添加到 Simulink 接口字典
    addDataInterface将数据接口添加到 Simulink 接口字典
    addEnumType将枚举类型添加到 Simulink 接口字典
    addNumericType将 Simulink 数值类型添加到 Simulink 接口字典
    addPlatformMapping将 AUTOSAR Classic 映射添加到 Simulink 接口字典
    addReferenceSimulink 接口字典引用添加到另一个接口字典
    addServiceInterface将服务接口添加到 Simulink 接口字典
    addStructType在 Simulink 接口字典中添加由 Simulink.Bus 表示的结构体类型
    addValueType将值类型添加到 Simulink 接口字典
    close关闭与 Simulink 接口字典的已打开连接
    discardChanges放弃对接口字典的更改
    findEntryByName获取接口字典中指定条目名称的对应对象
    getDataType获取 Simulink 接口字典中的数据类型
    getDataTypeNames获取 Simulink 接口字典中的数据类型名称
    getInterface获取 Simulink 接口字典中接口的接口对象
    getInterfaceNames获取由 Simulink 接口字典中的接口名称组成的元胞数组
    getPlatformMapping获取字典中平台的平台映射对象
    getReferences获取由另一个接口字典引用的接口字典名称组成的元胞数组
    importFromBaseWorkspace导入 Simulink 对象定义
    importFromFile导入 Simulink 对象定义
    isDirty检查 Simulink 接口字典中是否有未保存的更改
    removeDataType从 Simulink 接口字典中删除数据类型
    removeInterface从 Simulink 接口字典中删除接口
    removeReference从另一个接口字典中删除 Simulink 接口字典引用
    save保存对 Simulink 接口字典的更改
    show在独立查看器中查看 Simulink 接口字典的内容
    showChanges在比较查看器中查看对 Simulink 接口字典内容的更改

    示例

    全部折叠

    此示例创建 Simulink.interface.dictionary 对象并配置字典内容。此示例还显示如何管理 AUTOSAR Classic 平台相关的元素。

    创建一个接口字典。

    dictName = 'MyInterfaces.sldd';
    dictAPI = Simulink.interface.dictionary.create(dictName);

    添加数据类型。

    % Alias Types
    myAliasType1 = addAliasType(dictAPI,'aliasType',BaseType='single');
    myAliasType1.Name = 'myAliasType1';
    myAliasType1.BaseType = 'fixdt(1,32,16)';
     
    myAliasType2 = addAliasType(dictAPI,'myAliasType2');
    % can also use interface dict type objs
    myAliasType2.BaseType = myAliasType1;
     
    % Enum Type
    myEnumType1 = addEnumType(dictAPI,'myColor');
    myEnumType1.addEnumeral('RED','0','Solid Red');
    myEnumType1.addEnumeral('BLUE','1','Solid Blue');
    myEnumType1.DefaultValue = 'BLUE';
    myEnumType1.Description = 'I am a Simulink Enumeration';
    myEnumType1.StorageType = 'int16';
     
    % set base type of an alias type to be this enum object
    myAliasType3 = addAliasType(dictAPI,'myAliasType3');
    myAliasType3.BaseType = myEnumType1;
     
    % Value Type
    myValueType1 = addValueType(dictAPI,'myValueType1');
    myValueType1.DataType = 'int32';
    myValueType1.Dimensions = '[2 3]';
    myValueType1.Description = 'I am a Simulink ValueType';
    myValueType1.DataType = myEnumType1; % can also use interface dict type objs
     
    % Struct Type
    myStructType1 = addStructType(dictAPI,'myStructType1');
    structElement1 = myStructType1.addElement('Element1');
    structElement1.Type.DataType = 'single';
    structElement1.Type.Dimensions = '3';
    structElement2 = myStructType1.addElement('Element2');
    structElement2.Type = myValueType1;
    % or
    structElement2.Type = 'ValueType: myValueType1';
     
    % Nested Struct Type
    myStructType2 = addStructType(dictAPI,'myStructType2');
    myStructType2.Description = 'I am a nested structure';
    structElement = myStructType2.addElement('Element');
    structElement.Dimensions = '5';
    structElement.Type = myStructType1;
    % or
    structElement.Type = 'Bus: myStructType1';

    添加接口并对数据元素配置设计数据。

    dataInterface1 = addDataInterface(dictAPI,'DataInterface');
     
    dataElm1 = addElement(dataInterface1,'DE1');
    dataElm1.Type = myValueType1;
     
    dataElm2 = addElement(dataInterface1,'DE2');
    dataElm2.Type = myStructType2;
    dataElm2.Dimensions = '4';
    dataElm2.Description = 'I am a data element with datatype = array of struct type';
     
    % data element with owned type
    dataElm3 = addElement(dataInterface1,'DE3');
    dataElm3.Type.DataType = 'single';
    dataElm3.Type.Dimensions = '10';
    dataElm3.Type.Minimum = '-5';
     
    dataInterface2 = addDataInterface(dictAPI,'DataInterface2');

    添加 AUTOSAR Classic 映射。

    platformMapping = addPlatformMapping(dictAPI,'AUTOSARClassic');

    设置 AUTOSAR 通信接口和包属性。

    setPlatformProperty(platformMapping,dataInterface1,...
        Package='/Interface2',InterfaceKind='NvDataInterface');

    获取特定于平台的属性。

    [pNames, pValues] = getPlatformProperties(platformMapping,dataInterface1);

    管理 AUTOSAR Classic 平台相关的元素,即 SwAddrMethod 和标定属性。这些元素未映射到 Simulink。

    arObj = autosar.api.getAUTOSARProperties(dictName);
    addPackageableElement(arObj,'SwAddrMethod', ... 
        '/SwAddressMethods','VAR1','SectionType','Var');
    setPlatformProperty(platformMapping,dataElm1, ...
        SwAddrMethod='VAR1',SwCalibrationAccess='ReadWrite',... 
         DisplayFormat='%.3f');

    版本历史记录

    在 R2022b 中推出

    全部折叠