Получение адреса смежного сигнала, поступающего во входной порт
const void *ssGetInputPortSignal(SimStruct *S, int_T inputPortIdx)
SSimStruct представляет S-функциональный блок.
inputPortIdxИндекс порта, адрес которого требуется.
Указатель (void *) к входному порту, указанному индексом inputPortIdx.
Используется для получения адреса смежного сигнала, поступающего во входной порт. Ваша S-функция должна использовать этот макрос только в том случае, если mdlInitializeSizes указал, что элементы входного сигнала являются смежными, используя ssSetInputPortRequiredContiguous. Для несмежного ввода используйте ssGetInputPortSignalPtrs функция.
Примечание
Если указано, что входные порты повторно используются с помощью , то вы не можете использовать ssSetInputPortOptimOptsssGetInputPortSignal в любом месте, кроме mdlOutputs. Например, если входные данные были указаны как повторно используемые с SS_REUSABLE_AND_LOCAL флаг, mdlUpdate ошибки программы, так как она пытается получить доступ к недоступной входной памяти.
Примечание
ssGetInputPortSignal макрос становится функцией при компиляции S-функции в режиме отладки (mex -g).
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 {
InputPtrsType u = ssGetInputPortSignalPtrs(S,i);
for (j = 0; j < nu; j++) {
UseInputInSomeFunction(*u[j]);
}
}
}
Если известно, что входные данные всегда real_T сигналы, ssGetInputPortSignal строка в приведенном выше фрагменте кода будет
const real_T *u = ssGetInputPortRealSignal(S,i);