主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

ssGetInputPortSignal

获取进入输入端口的连续信号的地址

语法

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

参量

S

表示 S-Function 模块的 SimStruct。

inputPortIdx

需要地址的端口索引。

返回

指向索引 inputPortIdx 指定的输入端口的指针 (void *)。

描述

用于获取进入输入端口的连续信号的地址。仅当 mdlInitializeSizes 使用 ssSetInputPortRequiredContiguous 指定输入信号的元素是连续的时,您的 S-Function 才应使用此宏。对于不连续的输入,请使用 ssGetInputPortSignalPtrs 函数。

注意

如果您已指定使用 ssSetInputPortOptimOpts 可重复使用输入端口,那么您不能在 mdlOutputs 之外的任何地方使用 ssGetInputPortSignal。例如,如果使用 SS_REUSABLE_AND_LOCAL 标志将输入指定为可重复使用,则 mdlUpdate 例程会出错,因为它尝试访问不可用的输入内存。

注意

当您在调试模式 (mex -g) 下编译 S-Function 时,ssGetInputPortSignal 宏将成为函数。

语言

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 之前推出