概述
我在simulink中用单输入和单输出创建了一个用户定义的块,它工作得很好 . 但是当我在没有输入的情况下创建用户定义的块时,在simulink模型MATLAB Crashes中运行此块 . 下面是C S函数的代码 .
有关此的任何信息表示赞赏 .
#define S_FUNCTION_NAME My5times /* Defines and Includes */
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumSFcnParams(S, 2);
if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S))
{
return; /* Parameter mismatch reported by the Simulink engine*/
}
if (!ssSetNumInputPorts(S, 0))
return;
ssSetInputPortWidth(S, 0, DYNAMICALLY_SIZED);
ssSetInputPortDirectFeedThrough(S, 0, 0);
if (!ssSetNumOutputPorts(S,1))
return;
ssSetOutputPortWidth(S, 0, DYNAMICALLY_SIZED);
ssSetNumSampleTimes(S, 1);
/* Take care when specifying exception free code - see sfuntmpl.doc */
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
}
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
}
static void mdlOutputs(SimStruct *S, int_T tid)
{
int_T i;
/*int_T param = mxGetScalar(ssGetSFcnParam(S,0));*/
int_T buflen = mxGetN(ssGetSFcnParam(S, 0)) * sizeof(mxChar) + 1;
char_T* StringParam = mxMalloc(buflen);
int_T status = mxGetString(ssGetSFcnParam(S, 0), StringParam, buflen);
/* mexPrintf("The string being passed as a Paramater is - %sn ", String);*/
/* InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S, 0);*/
real_T *y = ssGetOutputPortRealSignal(S, 0);
int_T width = ssGetOutputPortWidth(S, 0);
for (i = 0 ; i < width ; i++)
{
*y++ = 1;
}
}
static void mdlTerminate(SimStruct *S){}
#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */
#include "simulink.c" /* MEX-file interface mechanism */
#else
#include "cg_sfun.h" /* Code generation registration function */
#endif
最后
以上就是高贵盼望为你收集整理的matlab无法定义块,在simulink中运行用户定义的块时,Matlab崩溃的全部内容,希望文章能够帮你解决matlab无法定义块,在simulink中运行用户定义的块时,Matlab崩溃所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复