我找不到获取在S函数(C,级别2)块的对话框中指定的字符串并将其保存在与该块相对应的.c文件内的变量中的方法。
通过* mxGetPr(ssGetSFcnParam(S,0)),我只能获取字符串中的第一个位置值。在对话框块中输入的与ssGetSFcnParam(S,0)相关的参数为'123'。在该块的蒙版编辑器中,类型为“编辑”。
#define S_FUNCTION_NAME ver_file_data #define S_FUNCTION_LEVEL 2 #define NPARAMS 14 #define DVC_TYPE(S) ssGetSFcnParam(S, 0) static void mdlInitializeSizes(SimStruct *S){ DECL_AND_INIT_DIMSINFO(outputDimsInfo); ssSetNumSFcnParams(S, NPARAMS); /* Number of expected parameters */ ssSetSFcnParamTunable(S, 0, 0); ssSetSFcnParamTunable(S, 1, 0); #if defined(MATLAB_MEX_FILE) if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) { mdlCheckParameters(S); if (ssGetErrorStatus(S) != NULL) { return; } } else { return; } #endif ssSetNumContStates(S, 0); ssSetNumDiscStates(S, 0); if (!ssSetNumInputPorts(S, NUM_INPUTS)) return; if (!ssSetNumOutputPorts(S, NUM_OUTPUTS)) return; /* Output Port 0 */ ssSetOutputPortWidth(S, 0, 1); ssSetOutputPortDataType(S, 0, SS_UINT8); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); } static void mdlInitializeSampleTimes(SimStruct *S){ ssSetSampleTime(S, 0, -1); ssSetOffsetTime(S, 0, 0.0); } static void mdlOutputs(SimStruct *S, int_T tid){ ssPrintf("DVC_IND_NO = %x\n",*mxGetPr(DVC_IND_NO(S))); } mdlRTW (SimStruct *S){ }
在通过输出端口获取任何东西之前,我希望能够使用ssPrintf(“ DVC_IND_NO =%x \ n”,* mxGetPr(DVC_IND_NO(S)))打印; 123。
谢谢你,最诚挚的问候。
[mxGetPr返回指向double
的指针,因此,如果参数为char数组,则没有意义。
看来您应该使用mxArrayToString。
在使用适当的函数访问数据之前,您肯定应该使用mxIsChar和mxIsDouble之类的辅助函数来检查数据类型。