メインコンテンツ

ssGetInputPortSignal

入力端子に入る連続的な信号のアドレスを取得する

構文

const void *ssGetInputPortSignal(SimStruct *S, int_T inputPortIdx)

引数

S

S-Function ブロックを表す SimStruct。

inputPortIdx

アドレスが必要な端子のインデックス。

戻り値

インデックス inputPortIdx で指定された入力端子へのポインター (void *)。

説明

入力端子に入る連続的な信号のアドレスを取得するために使用します。S-Function がこのマクロを使用するのは、mdlInitializeSizesssSetInputPortRequiredContiguous を使用して入力信号の要素が連続していることが指定されている場合だけです。

メモ

ssSetInputPortOptimOpts を使用して入力端子を再利用可能に指定した場合、mdlOutputs 以外の場所で ssGetInputPortSignal を使用することはできません。たとえば、SS_REUSABLE_AND_LOCAL フラグによって入力が再利用可能として指定されている場合、mdlUpdate ルーチンは使用できない入力メモリにアクセスしようとするため、エラーが発生します。

メモ

S-Function をデバッグ モードでコンパイルする場合 (mex -g)、ssGetInputPortSignal マクロは関数になります。

言語

C、C++

次のコードは、ssGetInputPortSignal の使い方を示しています。

nInputPorts = ssGetNumInputPorts(S);
for (i = 0; i < nInputPorts; i++) {
    int_T nu = ssGetInputPortWidth(S,i);

    if (ssGetInputPortRequiredContiguous(S,i)) {
	 const void *u = ssGetInputPortSignal(S,i);
	 UseInputVectorInSomeFunction(u, nu);
    } else {
% Note, starting in R2026a, S-Function blocks support only contiguous inputs. 
% It is recommended to use the contiguous input functions for faster access and better performance.
	 InputPtrsType u  = ssGetInputPortSignalPtrs(S,i);
	 for (j = 0; j < nu; j++) {
	      UseInputInSomeFunction(*u[j]);
	 }
    }
}

入力が常に real_T 信号であるとわかっている場合、上記のコードの抜粋の ssGetInputPortSignal 行は次のようになります。

const real_T *u = ssGetInputPortRealSignal(S,i);

バージョン履歴

R2006a より前に導入