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

OMNET++: How to create a timer event that fires on each second?

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

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 中。