Main Content

getFunctionDefault

モデル関数カテゴリに対する既定の関数カスタマイズ テンプレートまたはメモリ セクションの取得

R2020b 以降

    説明

    propertyValue = getFunctionDefault(coderMapObj,funcCategory,funcProperty) は指定された関数カテゴリに対して指定されたプロパティの値を返します。

    モデルに接続している Embedded Coder ディクショナリがサービス インターフェイス構成を定義している場合、既定の関数インターフェイスを指定することはできません。

    すべて折りたたむ

    プログラム インターフェイスを使用して、Simulink モデルのコード マッピングの関数の既定の設定を取得および構成します。

    コマンドが [コード マッピング] エディターとモデル ディクショナリにどのように反映されるかを対話的に確認するには、[関数の既定の設定] タブが選択された状態で [コード マッピング] エディターが開いていて、[関数カスタマイズ テンプレート] セクションが選択された状態でモデル ディクショナリが開いていることを確認してください。[コード マッピング] エディターを開く方法については、コード マッピング エディター – C を開くを参照してください。モデル ディクショナリを開く方法については、Embedded Coder ディクショナリ を開くを参照してください。

    モデル CoderMapAPI を開きます。

    simulinkModel = "ECoderMapAPI";
    open_system(simulinkModel);

    このモデルのコード マッピング オブジェクトを取得します。

    codeMapObj = coder.mapping.api.get(simulinkModel);

    すべてのモデル関数に対して FunctionName を空の文字列として指定します。これにより、生成されたコード内の関数の名前が、関数の既定の設定に指定した値によって決定されます。

    setFunction(codeMapObj,find(codeMapObj,"Functions"),FunctionName=string.empty);

    関数 InitializeTerminate および Execution の既定のカスタマイズ テンプレートを取得します。

    exeFCNsTemplate = getFunctionDefault(codeMapObj,"Execution","FunctionCustomizationTemplate")
    exeFCNsTemplate = 
    'FCN_Template__2'
    
    initTermFCNsTemplate = getFunctionDefault(codeMapObj,"InitializeTerminate","FunctionCustomizationTemplate")
    initTermFCNsTemplate = 
    'FCN_Template__1'
    

    モデルからコードを生成します。

    evalc("slbuild(simulinkModel)");

    モデルのエントリポイント関数は、モデルの生成されたヘッダー ファイルで宣言されます。ヘッダー ファイル名を格納します。

    model_h_file = fullfile(simulinkModel+"_ert_rtw",simulinkModel+".h")
    model_h_file = 
    "ECoderMapAPI_ert_rtw/ECoderMapAPI.h"
    

    FCN_Template__1[関数の命名規則]Template_1 で始まり、FCN_Template__2 の [関数の命名規則]Template_2 で始まります。以下に、生成されたヘッダー ファイルのエントリポイント関数宣言セクションを示します。

    /* Model entry point functions */
    extern void Template_1_FCN_ECoderMapAPI_initialize(void);
    extern void Template_2_FCN_ECoderMapAPI_step(void);
    extern void Template_1_FCN_ECoderMapAPI_terminate(void);
    

    関数名は、その関数に指定された [関数カスタマイズ テンプレート] の値に従って生成されます。

    ヘッダー ファイルを開くために、MATLAB® コマンド ウィンドウに次のコマンドを入力します。

    edit(model_h_file)
    

    2 つの関数カテゴリのテンプレート間で切り替えます。

    setFunctionDefault(codeMapObj,"Execution",FunctionCustomizationTemplate=initTermFCNsTemplate);
    setFunctionDefault(codeMapObj,"InitializeTerminate",FunctionCustomizationTemplate=exeFCNsTemplate);

    モデルからコードを再度生成します。

    evalc("slbuild(simulinkModel)");

    エントリポイント関数名が、更新された [関数カスタマイズ テンプレート] に従って更新されます。

    /* Model entry point functions */
    extern void Template_2_FCN_ECoderMapAPI_initialize(void);
    extern void Template_1_FCN_ECoderMapAPI_step(void);
    extern void Template_2_FCN_ECoderMapAPI_terminate(void);
    

    入力引数

    すべて折りたたむ

    関数 coder.mapping.api.get の呼び出しによって返されるコード マッピング オブジェクト (モデル コード マッピング)。

    例: myCM

    既定の関数カスタマイズ テンプレートまたはメモリ セクションを返すモデルのエントリポイント関数のカテゴリ。

    例: "Execution"

    値を返す FunctionCustomizationTemplate または MemorySection

    例: "FunctionCustomizationTemplate"

    出力引数

    すべて折りたたむ

    関数カスタマイズ テンプレートまたはメモリ セクションの名前。

    データ型: char | string

    バージョン履歴

    R2020b で導入