OMNET ++:如何创建一个每秒触发的计时器事件?

时间:2018-07-21 14:40:52

标签: omnet++ inet

我在OMNET++ Framework 4.0中使用INET。如何在自定义移动模块中创建一个计时器,使其每秒触发一次,以便每次触发计时器事件时都可以移动AdhocHost

1 个答案:

答案 0 :(得分:2)

OMNeT++ self-messages中是计时器。
为了实现您的目标,您应该创建一个cMessage对象,使用scheduleAt()对其进行计划,然后在handleMessage()中对其进行每次到期时重新计划。
例如:

// somewhere in simple module class declaration (*.h)
simtime_t timerInterval;
cMessage * timer;

// in initialize()
timerInterval = 1.0; // one second
timer = new cMessage("one second timer");
scheduleAt(simTime() + timerInterval, timer);

// in handleMessage()
if (msg == timer) {
   // do something

   scheduleAt(simTime() + timerInterval, timer);  // rescheduling
}

// in finish()
cancelAndDelete(timer);


顺便说一句:在OMNeT++样本中有很多使用自我消息的示例,尤其是在Tictoc中。