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