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

Примечание

Макрос 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

Была ли эта тема полезной?