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

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте