获取进入输入端口的连续信号的地址
const void *ssGetInputPortSignal(SimStruct *S, int_T inputPortIdx)
年代
表示s -功能块的SimStruct。
inputPortIdx
需要指定地址的端口索引。
一个指针(void *
)到索引指定的输入端口inputPortIdx
.
用于获取进入输入端口的连续信号的地址。你的s函数应该只使用这个宏mdlInitializeSizes
已指定输入信号的元素是连续的,使用ssSetInputPortRequiredContiguous
.对于非连续输入,使用ssGetInputPortSignalPtrs
函数。
请注意
如果您已经指定输入端口是可重用使用的
,则不能使用ssSetInputPortOptimOpts
ssGetInputPortSignal
除了在mdlOutputs
.例如,如果输入被指定为可重用的SS_REUSABLE_AND_LOCAL
国旗,mdlUpdate
例程错误输出,因为它试图访问不可用的输入内存。
请注意
的ssGetInputPortSignal
当您在调试模式下编译S-function时,宏将成为一个函数(墨西哥人- g
).
C, c++
下面的代码演示了使用ssGetInputPortSignal
.
nInputPorts = ssGetNumInputPorts(年代);For (i = 0;我< nInputPorts;i++) {int_T nu = ssgetinputporttwidth (S,i);if (ssgetinputportrequiredcontinuous (S,i)) {const void *u = ssGetInputPortSignal(S,i);UseInputVectorInSomeFunction (u,ν);} else {InputPtrsType u = ssGetInputPortSignalPtrs(S,i);For (j = 0;j <ν;j + +) {UseInputInSomeFunction (* u [j]); } } }
如果你知道输入总是real_T
信号,ssGetInputPortSignal
上面代码段中的行将是
const real_T *u = ssGetInputPortRealSignal(S,i);