exponenta event banner

ssGetInputPortSignal

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

Синтаксис

const void *ssGetInputPortSignal(SimStruct *S, int_T inputPortIdx)

Аргументы

S

SimStruct представляет S-функциональный блок.

inputPortIdx

Индекс порта, адрес которого требуется.

Прибыль

Указатель (void *) к входному порту, указанному индексом inputPortIdx.

Описание

Используется для получения адреса смежного сигнала, поступающего во входной порт. Ваша S-функция должна использовать этот макрос только в том случае, если mdlInitializeSizes указал, что элементы входного сигнала являются смежными, используя ssSetInputPortRequiredContiguous. Для несмежного ввода используйте ssGetInputPortSignalPtrs функция.

Примечание

Если указано, что входные порты повторно используются с помощью ssSetInputPortOptimOpts, то вы не можете использовать ssGetInputPortSignal в любом месте, кроме 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);
Представлен до R2006a