getmsg.cpp

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

CPP
85
字号
#ifndef GET_MSG#define GET_MSG#include "getnetwork.cpp"// do the dirty work: poke around inside nwsys of network block NWmsg *nwGetMsg(Network* net) {  NWmsg *m;  if ((m = (NWmsg *)net->nwsys->nwnodes[net->nodeNbr]->postprocQ->getFirst()) != NULL) {    net->nwsys->nwnodes[net->nodeNbr]->postprocQ->removeNode(m);  }  return m;}void *ttGetMsg(int networkNbr) // returns data (void *) or NULL if no message{  void *data;  Network* net = getNetwork(networkNbr);  if (net == NULL) {    // is there no network?    char buf[200];    sprintf(buf, "ttGetMsg: Network #%d not present!", networkNbr);    MEX_ERROR(buf);    return NULL;  }  NWmsg *nwmsg = nwGetMsg(net);   if (nwmsg == NULL) {    return NULL;  }  data = nwmsg->data;  nwmsg->timesRead++;  if (nwmsg->receiver == -1 && nwmsg->timesRead == net->nwsys->nbrOfNodes-1) {    //printf("Message read %d times!\n", nwmsg->timesRead);    // Delete message if read by all nodes (broadcast)    //delete nwmsg;  } else if (nwmsg->receiver > -1) {    // Delete message    //delete nwmsg;  }  return data;}void *ttGetMsg() {  return ttGetMsg(1);}// For use from Matlab mex functionchar *ttGetMsgMATLAB(int networkNbr) {  Network* net = getNetwork(networkNbr);    if (net == NULL) {    // is there no network?    char buf[200];    sprintf(buf, "ttGetMsg: Network #%d not present!", networkNbr);    MEX_ERROR(buf);    return NULL;  }  NWmsg *nwmsg = nwGetMsg(net);  if (nwmsg == NULL) {    return NULL;  }  char* data = new char[strlen(nwmsg->dataMATLAB)+1];  strcpy(data, nwmsg->dataMATLAB);  nwmsg->timesRead++;  if (nwmsg->receiver == -1 && nwmsg->timesRead == net->nwsys->nbrOfNodes-1) {    // Delete message if read by all nodes (broadcast)    delete[] nwmsg->dataMATLAB;    delete nwmsg;  } else if (nwmsg->receiver > -1) {    // Delete message    delete[] nwmsg->dataMATLAB;    delete nwmsg;  }  return data;}#endif

⌨️ 快捷键说明

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