Получите адрес непрерывного сигнала, вводящего входной порт
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 стандартные ошибки, потому что это пытается получить доступ к входу memory, который недоступен.
Примечание
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);