Main Content

coder.mapping.utils.create

C および C++ コード生成用にデータおよび関数インターフェイスを構成するためのコード マッピング オブジェクトを作成する

R2020b 以降

    説明

    coderMapObj = coder.mapping.utils.create(simulinkModel) は、指定されたモデルに対するコード マッピング環境を作成し、コード マッピングが存在しない場合はそれをオブジェクト coderMapObj として返します。コード マッピングはモデル データ要素と関数を C または C++ コード生成の構成に関連付けます。指定されたモデルに対するコード マッピングが存在する場合、関数はそれらのコード マッピングをオブジェクト coderMapObj として返します。

    すべて折りたたむ

    プログラム インターフェイスを使用して、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 ファイル拡張子を含む) を含む文字ベクトルまたは string スカラーとして指定します。

    メモ

    モデルが (たとえば、load_system を使用して) 読み込まれていなければなりません。

    例: "configModel"

    データ型: char | string | handle

    出力引数

    すべて折りたたむ

    モデルのコード マッピング。CodeMapping オブジェクトまたは CodeMappingCPP オブジェクトとして返されます。

    出力入力オブジェクト
    coder.mapping.api.CodeMappingC コード生成用に構成された Simulink モデル
    coder.mapping.api.CodeMappingCPP (Embedded Coder)C++ コード生成用に構成された Simulink モデル

    バージョン履歴

    R2020b で導入