sendmsg.cpp

来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 125 行

CPP
125
字号
#ifndef SEND_MSG#define SEND_MSG#include "getnetwork.cpp"// do the dirty work: poke around inside nwsys of the network block void nwSendMsg(NWmsg *nwmsg, RTnetwork *nwsys) {  // set time when finished preprocessing  nwmsg->waituntil = rtsys->time + nwsys->predelay;  // enqueue message in preprocQ  nwsys->nwnodes[nwmsg->sender]->preprocQ->appendNode(nwmsg);}// declare the four(!) versionsvoid ttSendMsg(int receiver, void *data, int length);void ttSendMsg(int receiver, void *data, int length, int priority);void ttSendMsg(int networkNbr, int receiver, void *data, int length);void ttSendMsg(int networkNbr, int receiver, void *data, int length, int priority);void ttSendMsg(int receiver, void *data, int length){  Network* net = getNetwork(1);  if (net == NULL) {    MEX_ERROR("ttSendMsg: Network not present!");    return;  }  int priority = net->nodeNbr;  ttSendMsg(1, receiver, data, length);}void ttSendMsg(int networkNbr, int receiver, void *data, int length){  Network* net = getNetwork(networkNbr);  if (net == NULL) {    char buf[200];    sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr);    MEX_ERROR(buf);    return;  }  int priority = net->nodeNbr;  ttSendMsg(networkNbr, receiver, data, length, priority);}void ttSendMsg(int receiver, void *data, int length, int priority){  ttSendMsg(1, receiver, data, length, priority);}void ttSendMsg(int networkNbr, int receiver, void *data, int length, int priority){  int i;  Network* net = getNetwork(networkNbr);  if (net == NULL) {    char buf[200];    sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr);    MEX_ERROR(buf);    return;  }    if (receiver < -1 || receiver > net->nwsys->nbrOfNodes) {    MEX_ERROR("ttSendMsg: receiver number out of bounds!");    return;  }  NWmsg *nwmsg = new NWmsg();  nwmsg->sender = net->nodeNbr;  nwmsg->timesRead = 0;  nwmsg->receiver = receiver-1;  nwmsg->data = data;  nwmsg->length = length;  nwmsg->prio = priority;      nwSendMsg(nwmsg, net->nwsys);  rtsys->nwSnd[net->networkID - 1] += 1.0; // trigger output}// For use from Matlab mex functionvoid ttSendMsgMATLAB(int networkNbr, int receiver, int length, char* dataMATLAB, double priority){  int i;  Network* net = getNetwork(networkNbr);  if (net == NULL) {    // is there no network?    char buf[200];    sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr);    mexErrMsgTxt(buf);  }  if (receiver < -1 || receiver > net->nwsys->nbrOfNodes) {    mexErrMsgTxt("ttSendMsg: receiver number out of bounds");  }  NWmsg *nwmsg = new NWmsg();  nwmsg->sender = net->nodeNbr;  nwmsg->timesRead = 0;  nwmsg->receiver = receiver-1;  nwmsg->data = NULL;  nwmsg->dataMATLAB = new char[strlen(dataMATLAB)+1];  strcpy(nwmsg->dataMATLAB, dataMATLAB);  nwmsg->length = length;  nwmsg->prio = priority;    nwSendMsg(nwmsg, net->nwsys);  rtsys->nwSnd[net->networkID - 1] += 1.0; // trigger output} void ttSendMsgMATLAB(int networkNbr, int receiver, int length, char* dataMATLAB){  Network* net = getNetwork(networkNbr);  if (net == NULL) {    // is there no network?    char buf[200];    sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr);    mexErrMsgTxt(buf);  }  int priority = net->nodeNbr;  ttSendMsgMATLAB(networkNbr, receiver, length, dataMATLAB, priority);}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?