メインコンテンツ

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

初期化、出力、および終了の動作の指定

setupImpl および stepImpl メソッドは、C/C++ 関数を System object™ にフックします。C/C++ デバイス ドライバー コードの作成の詳細については、ハードウェア固有の C/C++ コードの記述を参照してください。出力としてのデジタル ピンの初期化は、モデルの初期化時に 1 回だけ行う必要があります。したがって、MW_gpioInit 関数は setupImpl で呼び出されます。デジタル出力ピンの論理状態を更新するために、stepImpl メソッドから MW_gpioWrite が呼び出されます。終了時には、ハードウェア リソースを解放するために releaseImpl メソッドから MW_gpioTerminate が呼び出されます。System object テンプレートの選択で作成した DigitalWrite System object の初期化、出力、および終了の各コード セクションを更新するには、以下の手順に従います。

  1. MATLAB® エディターで DigitalWrite.m クラス ファイルを開きます。

  2. 次のコードを使用して、setupImpl メソッドを更新します。

    methods (Access=protected)
        function setupImpl(obj) %#ok<MANU>
            if isempty(coder.target)
                % Place simulation setup code here
            else
                % Call C-function implementing device initialization
                coder.cinclude('MW_gpio.h');
                coder.ceval('MW_gpioInit', 9, 1);
            end
        end
        ...
    end

    coder.ceval 関数は、digitalio_arduino.h の C ラッパー関数の呼び出しを実行します。coder.ceval の 2 番目と 3 番目の引数は、それぞれハードウェアのピン番号とピン モードの値です。

  3. 次のコードを使用して、BuildInfo メソッドを更新します。

    methods (Static)
        ...
        function updateBuildInfo(buildInfo, context)
            if context.isCodeGenTarget('rtw')
                % Update buildInfo
                srcDir = fullfile(fileparts(mfilename('fullpath')),'src'); %#ok     
                includeDir = fullfile(fileparts(mfilename('fullpath')),'include');                 
                addIncludePaths(buildInfo,includeDir);
                % Use the following API's to add include files, sources and linker flags
                addSourceFiles(buildInfo,'MW_gpio.c', srcDir);
            end
        end
        ...
    end
  4. 次のコードで stepImpl メソッドを更新します。

    methods(Access=protected)
        ...
        function stepImpl(obj,u) %#ok<INUSD>
            if isempty(coder.target)
                % Place simulation setup code here
            else
                % Call C-function implementing device output
                coder.ceval('MW_gpioWrite', 9, u);
            end
        end
        ...
    end
  5. 次のコードで releaseImpl メソッドを更新します。

    methods(Access=protected)
        ...
        function releaseImpl(obj) %#ok<MANU>
            if isempty(coder.target)
                % Place simulation termination code here
            else
                % Call C-function implementing device termination
                coder.ceval('MW_gpioTerminate', 9);
            end
        end
        ...
    end

次のセクションでは、MATLAB コマンド ラインでの System object のテストを行います。

参考

| |