主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

coder.mapping.utils.create

创建代码映射对象,用于配置 C 和 C++ 代码生成的数据和函数接口

    说明

    如果不存在,coderMapObj = coder.mapping.utils.create(simulinkModel) 会为指定的模型创建一个代码映射环境,并将其作为对象 coderMapObj 返回。代码映射将模型数据元素和函数与 C 或 C++ 代码生成的配置关联起来。如果指定模型存在代码映射,则该函数将这些代码映射作为对象 coderMapObj 返回。

    示例

    coderMapObj = coder.mapping.utils.create(simulinkModel,configObj) 在为指定模型创建 C 代码映射时,从配置集 configObj 导入默认内存部分和共享实用工具命名规则配置。请参阅Migration of Memory Section and Shared Utility Settings from Configuration Parameters to Code Mappings

    示例

    全部折叠

    使用编程接口创建和使用 Simulink 模型的代码映射对象。

    加载模型 NoCoderMapping

    simulinkModel = "NoCoderMapping";
    load_system(simulinkModel);

    使用 try-catch 模块来确定模型是否存在代码映射对象。在 try 模块内,尝试使用函数 coder.mapping.api.get 检索现有对象。在 catch 模块内,使用函数 coder.mapping.utils.create 创建一个新的代码映射对象。将代码映射对象存储在变量 codeMapObj 中。

    添加打印消息以显示模型是否具有现有的代码映射对象。

    try
      codeMapObj = coder.mapping.api.get(simulinkModel);
              fprintf("" + ...
                " ========================================================\n" + ...
                " The model already had code mappings.\n" + ...
                " ========================================================\n");
    catch
              fprintf("" + ...
                " ==========================================\n" + ...
                " The model does not have code mappings.\n" + ...
                " Creating new code mappings for the model.\n" + ...
                " ==========================================\n");
      codeMapObj = coder.mapping.utils.create(simulinkModel);
    end
     ==========================================
     The model does not have code mappings.
     Creating new code mappings for the model.
     ==========================================
    

    检索模型输入端口 inport_1 的存储类。

    getInport(codeMapObj,"inport_1","StorageClass")
    ans = 
    'Auto'
    

    将输入端口 inport_1 的存储类设置为 ExportedGlobal

    setInport(codeMapObj,"inport_1",StorageClass="ExportedGlobal")

    使用相同的 try-catch 模块来查看函数 coder.mapping.api.get 现在如何检索模型的现有代码映射。

    try
      codeMapObj = coder.mapping.api.get(simulinkModel);
              fprintf("" + ...
                " ========================================================\n" + ...
                " The model already had code mappings.\n" + ...
                " ========================================================\n");
    catch
              fprintf("" + ...
                " ==========================================\n" + ...
                " The model does not have code mappings.\n" + ...
                " Creating new code mappings for the model.\n" + ...
                " ==========================================\n");
      codeMapObj = coder.mapping.utils.create(simulinkModel);
    end
     ========================================================
     The model already had code mappings.
     ========================================================
    

    检索模型输入端口 inport_1 的存储类。注意它是您之前设置的存储类。

    getInport(codeMapObj,"inport_1","StorageClass")
    ans = 
    'ExportedGlobal'
    

    关闭模型而不保存。

    close_system(simulinkModel,false)

    输入参数

    全部折叠

    Simulink® 模型,为其创建并返回代码映射对象,指定为句柄或字符向量或字符串标量,带有模型名称(不带 .slx 文件扩展名),或模型文件的相对或绝对路径(包括 .slx 文件扩展名)。

    注意

    必须加载模型(例如,使用 load_system)。

    示例: "configModel"

    数据类型: char | string | handle

    在为 simulinkModel 创建代码映射时,从中导入内存部分和共享实用工具命名规则配置的模型配置对象,指定为句柄、字符向量或字符串标量。指定配置集对象以保留应用于 R2018a 之前的 Embedded Coder® 版本中的模型的内存部分定义或共享实用工具命名规则。

    示例: "my_legacyConfigset"

    输出参量

    全部折叠

    模型代码映射,以 CodeMapping 对象或 CodeMappingCPP 对象的形式返回。

    输出输入对象
    coder.mapping.api.CodeMapping为 C 代码生成配置的 Simulink 模型
    coder.mapping.api.CodeMappingCPP为 C++ 代码生成配置的 Simulink 模型

    版本历史记录

    在 R2020b 中推出