Main Content

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

クラス インターフェイスの設定

チュートリアルのこのステップでは、C++ クラス インターフェイスを構成します。カスタマイズした C++ クラス インターフェイスを使用すると、生成されたクラスで特定のコードの標準やインターフェイス要件を満たすことができ、生成後のカスタマイズが最小限で済む大規模なアーキテクチャを生成コードでコンパイルして生成コードをそのアーキテクチャに統合できるようになります。

モデル CppClassWorkflowKeyIgnition のクラス インターフェイスをカスタマイズするには、次を行います。

  • クラス名を engine_status に変更します。

  • クラス名前空間を en1 に設定します。

  • モデルの入力端子をパブリックとして構成し、アクセスのための set メソッドを指定します。

  • モデルの出力端子をパブリックとして構成し、すべての出力端子にアクセスするための集約構造体ベースの get メソッドを指定します。

  • 初期化エントリポイント メソッドと終了エントリポイント メソッドの名前を更新します。

モデルのクラス名と名前空間の構成

  1. モデル CppClassWorkflowKeyIgnition が開いていない場合はモデルを開きます。

    openExample('ecoder/CppCodeGenerationWorkflowForKeyIgnitionSystemExample', ...
                 supportingFile='CppClassWorkflowKeyIgnition.slx')
  2. [C++ コード] タブで、[コード インターフェイス] をクリックして [クラス名と名前空間] を選択します。

  3. [C++ クラス名] フィールドを engine_status に編集します。

  4. [C++ クラス名空間] フィールドに「en1」と入力します。

    Set the model class name and namespace for the Configure C++ Class Settings window for CppClassWorkflowKeyIgnition

  5. [OK] をクリックします。検証が対話形式で実行され、無効な名前または名前空間を入力している場合はフィールドに関する警告が表示されます。

  6. モデルを保存し、[ビルド] をクリックしてコードをビルドし再生成します。

  7. コード ビュー ペインで、engine_status を検索して生成コードの変更内容を確認します。

    Search for new class name in the Code view

クラス メンバーの可視性とアクセスの構成

  1. コード マッピング エディターを開きます。

    コード マッピング エディターを開くには、[C++ コード] タブで、[コード インターフェイス] をクリックして [コード マッピング] を選択します。

  2. [Data] タブをクリックして [Data] ペインを開きます。

    コード マッピングのスプレッドシートに、モデル要素の各カテゴリに関する可視性とアクセスの情報が表示されます。

  3. [Inports] を構成します。

    • [Data Visibility] 列で、[public] を選択します。

    • [Member Access Method] 列で、[Inlined method] を選択します。

  4. [Outports] を構成します。

    • [Data Visibility] 列で、[public] を選択します。

    • [Member Access Method] 列で、[Structure-based method] を選択します。

  5. モデルを保存し、[ビルド] をクリックしてコードをビルドし再生成します。

  6. モデル CppClassWorkflowKeyIgnition で、Inport ブロック keyState をクリックします。

  7. ブロックの上の省略記号メニューの上にカーソルを置き、[コードに移動] をクリックします。

    View of the contextual menu for the keyState inport block

    コード ビューで、ブロックに対応するコードが強調表示されます。

  8. コード ビューで、検索矢印をクリックして、ルート入力端子 keyState の set メソッド setkeyState のパブリック宣言および定義を見つけます。

    View of the code for the setkeyState method

    集約されたルート出力端子の get メソッド getExternalOutputs が入力端子の set メソッドの直下に宣言されています。

  9. getExternalOutputs メソッドの宣言内の識別子 ExtY にカーソルを合わせます。

    [トレーサビリティ] ダイアログ ボックスに、コードに対応する定義が表示されます。

    View of the traceability dialog box displaying the ExtY structure

  10. [トレーサビリティ] ダイアログ ボックスで、struct ExtY をクリックしてその構造体を見つけます。

        // External outputs (root outports fed by signals with default storage)
        struct ExtY {
          real_T engineState[3];           // '<Root>/engineState'
          real_T cycleTime;                // '<Root>/cycleTime'
        };
  11. 検索バーに「getExternalOutputs」と入力し、Enter キーを押して CppClassWorkflowKeyIgnition.cpp 内のメソッド定義を見つけます。

モデル関数の構成

クラス メソッド名を構成します。モデルから C++ コードを生成すると、生成コードでモデルのエントリポイント関数がクラス メソッドとして表示されます。外部コードやインターフェイスの要件と統合するには、生成されたメソッドの名前をカスタマイズできます。

  1. ファンクションコード マッピング エディターで、[Functions] タブをクリックしてクラス メソッドを表示します。

  2. [Initialize] 関数名を構成します。

    [Method Name] 列で、スプレッドシートをクリックして編集し、名前を initIntegrator に変更します。

  3. [Terminate] 関数名を構成します。

    [Method Name] 列で、スプレッドシートをクリックして編集し、名前を terminateIntegrator に変更します。

  4. [Method Preview] 列で更新した名前を確認します。

    View of the CppClassWorkflowKeyIgnition model in Simulink. The toolstrip is at the top. The Simulink model is in the middle. The Code Mappings pane is at the bottom. The Functions tab in the Code Mappings pane is open, displaying updated entry-point function names.

  5. モデルを保存し、[ビルド] をクリックしてコードをビルドし再生成します。

  6. コード ビューで、エントリポイント関数の更新したメソッド名を検索して生成コードを確認します。

次に、C++ 生成コードを展開します。