setperiod.cpp
来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 60 行
CPP
60 行
#ifndef SET_PERIOD#define SET_PERIOD#include "gettask.cpp"#include "findQ.cpp"#include "moveready.cpp"// Setting period of a specific taskvoid ttSetPeriod(double newPeriod, char *nameOfTask) { TaskNode *tn; Task* task = getTask(nameOfTask); if (task == NULL) { char buf[200]; sprintf(buf, "ttSetPeriod: Non-existent task '%s'!", nameOfTask); MEX_ERROR(buf); return; } if (task->perTimer == NULL) { char buf[200]; sprintf(buf, "ttSetPeriod: Task '%s' not periodic!", nameOfTask); MEX_ERROR(buf); return; } double lastStart = task->perTimer->time - task->perTimer->period; double newTime = lastStart + newPeriod; task->perTimer->time = newTime; task->perTimer->period = newPeriod; // Update timerQ TimerNode* tin = (TimerNode*) rtsys->timerQ->getLast(); while (tin->getTimer() != task->perTimer) { tin = (TimerNode*) tin->getPrev(); } rtsys->timerQ->removeNode(tin); rtsys->timerQ->insertSorted(tin); // Reshuffle readyQ? tn = findInQ(nameOfTask, rtsys->readyQ); if (tn != NULL) { rtsys->readyQ->deleteNode(tn); moveToReadyQ(task); }}// Setting period of calling taskvoid ttSetPeriod(double newPeriod) { if(rtsys->executing == NULL) { MEX_ERROR("ttSetPeriod: No running task!"); return; } ttSetPeriod(newPeriod, rtsys->executing->name);}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?