Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

find

モデル コード マッピングのカテゴリに対するモデル要素の取得

R2020b 以降

    説明

    modelElementsFound = find(coderMapObj,elementCategory) は指定されたカテゴリのモデル コード マッピングの要素をオブジェクトの配列として返します。

    modelElementsFound= find(coderMapObj,elementCategory,Name=Value) は指定されたプロパティと値の条件に一致する指定されたカテゴリのモデル コード マッピングの要素を返します。

    すべて折りたたむ

    プログラム インターフェイスを使用して、コード マッピングに関連するモデル要素を検出します。

    コマンドが [コード マッピング] エディターにどのように反映されるかを対話的に確認するには、[入力端子] タブが選択された状態で [コード マッピング] エディターが開いていることを確認してください。[コード マッピング] エディターを開く方法については、コード マッピング エディター – C を開くを参照してください。

    モデル CoderMapAPI を開きます。

    simulinkModel = "CoderMapAPI";
    open_system(simulinkModel);

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

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

    ImportedExtern ストレージ クラスの端子と ImportedExternPointer ストレージ クラスの入力端子の入力端子ハンドルを検出します。

    importedExternInportHandles = find(codeMapObj,"Inports",StorageClass="ImportedExtern")'
    importedExternInportHandles = 2×1
    
      154.0004
      278.0004
    
    
    importedExternPointerInportHandles = find(codeMapObj,"Inports",StorageClass="ImportedExternPointer")'
    importedExternPointerInportHandles = 2×1
    
      280.0002
      282.0002
    
    

    入力端子の名前を取得します。

    importedExterInportNames = string(get_param(importedExternInportHandles,"Name"))
    importedExterInportNames = 2x1 string
        "in_port_1"
        "in_port_2"
    
    
    importedExternPointerInportNames = string(get_param(importedExternPointerInportHandles,"Name"))
    importedExternPointerInportNames = 2x1 string
        "in_port_3"
        "in_port_4"
    
    

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

    evalc("slbuild(simulinkModel)");

    ImportedExtern および ImportedExternPointer ストレージ クラスのルートレベルの端子は、モデルの生成されたプライベート ヘッダー ファイル内の別個のセクションで宣言されます。

    プライベート ヘッダー ファイルの名前を格納します。

    priv_h_file = fullfile(simulinkModel+"_grt_rtw",simulinkModel+"_private.h")
    priv_h_file = 
    "CoderMapAPI_grt_rtw/CoderMapAPI_private.h"
    

    以下に、ヘッダー ファイル内のルートレベルの端子の宣言を示します。

    /* Imported (extern) block signals */
    extern real_T in_port_1;               /* '<Root>/in_port_1' */
    extern real_T in_port_2;               /* '<Root>/in_port_2' */
    
    /* Imported (extern) pointer block signals */
    extern real_T *in_port_3;              /* '<Root>/in_port_3' */
    extern real_T *in_port_4;              /* '<Root>/in_port_4' */
    

    端子のストレージ クラスは関数 find に渡したストレージ クラスと一致しています。

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

    edit(priv_h_file)
    

    モデル キャンバスおよび [コード マッピング] エディターで強調表示された ImportedExtern の入力端子を確認するには、次のコマンドを入力します。

    arrayfun(@(pHandle) set_param(pHandle,Selected="on"),importedExternInportHandles);

    入力引数

    すべて折りたたむ

    関数 coder.mapping.api.get の呼び出しで返されるコード マッピング オブジェクト

    例: coderMapObj = coder.mapping.api.get(bdroot)

    モデル コード マッピングで検索するモデル要素のカテゴリ。次の値のいずれかとして指定します。

    • "DataStores"

    • "DataTransfers"

    • "ExportedFunctions"

    • "Functions"

    • "FunctionCallers"

    • "Inports"

    • "ModelParameters"

    • "ModelParameterArguments"

    • "Outports"

    • "PartitionFunctions"

    • "PartitionUpdateFunctions"

    • "PeriodicFunctions"

    • "PeriodicUpdateFunctions"

    • "ResetFunctions"

    • "Signals"

    • "SimulinkFunctions"

    • "States"

    名前と値の引数

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。

    例: find(coderMapObj,StorageClass="Bitfield")

    データ インターフェイス

    すべて折りたたむ

    検索条件に含めるデータ要素のストレージ クラスの名前。次の値のいずれかとして指定します。

    • "Auto"

    • "ExportedGlobal"

    • "ImportedExtern"

    • "ImportedExternPointer"

    使用可能なストレージ クラスのリストは、指定したカテゴリによって異なります。

    コード ジェネレーターが生成されたコード内でデータ要素を識別するために使用する名前。"Auto" 以外のストレージ クラスに適用されます。

    データ型: char | string

    出力引数

    すべて折りたたむ

    検出されたモデル要素。指定した要素カテゴリに応じて string 配列またはハンドル配列として返されます。

    要素カテゴリ返されるオブジェクトのタイプ
    "Inports""Outports""States"ブロック ハンドル
    "Signals"端子ハンドル
    "DataStores"ブロック ハンドル
    "ModelParameters"モデル パラメーター名
    "ModelParameterArguments"モデル パラメーター引数名

    バージョン履歴

    R2020b で導入

    すべて展開する