ttsendmsg.cpp
来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 58 行
CPP
58 行
#define KERNEL_MATLAB#include "../ttkernel.h" RTsys *rtsys;#include "../sendmsg.cpp"#include "getrtsys.cpp"void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ){ static int count = 0; int network, receiver, length; mxArray *data; double priority = -INF; rtsys = getrtsys(); // Get pointer to rtsys // Check number and type of arguments. if (nrhs < 3 || nrhs > 4) { mexErrMsgTxt("ttSendMsg: Wrong number of input arguments!\nUsage: ttSendMsg(receiver, data, length) or\n ttSendMsg(receiver, data, length, priority) or\n ttSendMsg([network receiver], data, length) or\n ttSendMsg([network receiver], data, length, priority)"); } if (mxIsDoubleScalar(prhs[0])) { // no network specified network = 1; receiver = (int)*mxGetPr(prhs[0]); } else if (mxIsDouble(prhs[0]) && !mxIsComplex(prhs[0]) && mxGetM(prhs[0])==1 && mxGetN(prhs[0])==2) { network = (int)*mxGetPr(prhs[0]); receiver = (int)*(mxGetPr(prhs[0])+1); } else { mexErrMsgTxt("ttSendMsg: receiver must be a number or a vector [network receiver]"); } data = mxDuplicateArray(prhs[1]); if (!mxIsDoubleScalar(prhs[2])) mexErrMsgTxt("ttSendMsg: length must be a number"); length = (int)*mxGetPr(prhs[2]); if (nrhs == 4) { if(!mxIsDoubleScalar(prhs[3])) mexErrMsgTxt("ttSendMsg: priority must be a number"); priority = *mxGetPr(prhs[3]); } char* dataname = new char[20]; count++; sprintf(dataname, "%d", count); mexPutVariable("global", dataname, data); mxDestroyArray(data); if (priority == -INF) { ttSendMsgMATLAB(network, receiver, length, dataname); } else { ttSendMsgMATLAB(network, receiver, length, dataname, priority); } delete[] dataname;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?