Получите адрес смежного сигнала, входящего во входной порт
const void *ssGetInputPortSignal(SimStruct *S, int_T inputPortIdx)
SSimStruct, представляющий блок S-Function.
inputPortIdxИндекс порта, адрес которого необходим.
Указатель (void *) к входному порту, заданному индексом inputPortIdx.
Используйте, чтобы получить адрес смежного сигнала, входящего в входной порт. Ваша S-функция должна использовать этот макрос только в том случае, если mdlInitializeSizes определил, что элементы входного сигнала являются смежными, используя ssSetInputPortRequiredContiguous. Для несмежного входа используйте ssGetInputPortSignalPtrs функция.
Примечание
Если вы указали, что входные порты переиспользуются , тогда вы не можете использовать ssSetInputPortOptimOptsssGetInputPortSignal где угодно, кроме mdlOutputs. Для примера, если входы были заданы как переиспользуемые со SS_REUSABLE_AND_LOCAL флаг, mdlUpdate обычные ошибки, поскольку он пытается получить доступ к недоступной входной памяти.
Примечание
The 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);