ssGetInputPortSignal

Получите адрес смежного сигнала, входящего во входной порт

Синтаксис

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

Примечание

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);
Представлено до R2006a