【发布时间】:2019-05-27 14:39:08
【问题描述】:
需要你的帮助。
我有三个模块 Module A、Module B 和 Module C。
Module A 向 Module B 发送 20 条消息。我想在收到 Module A 的所有 20 条消息后向 Module C 发送一个数据包。我如何在 handleMessage 上处理这种情况?
目前它像循环一样运行。每次到达时都会发送一条消息。我需要的是从前一个模块收集所有消息,从中收集数据,准备一条消息并将一条消息发送到下一个模块。
================================================ ==
谢谢000102,
您的第一个解决方案运行良好。我只是在为第二种解决方案而苦苦挣扎。所以请帮我解决这个问题。请检查下面的代码,让我知道我错在哪里。
class ModuleB: public cSimpleModule
{
protected:
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
private:
bool sentMessage = false;
simtime_t lastMessageReceivedAt;
simtime_t timer;
};
void ModuleB::initialize()
{
}
void ModuleB::handleMessage(cMessage *msg)
{
if(simTime() - lastMessageReceivedAt >= timer && sentMessage == false)
{
EV << counter << " messages to receive before sending.\n";
// Data collection
}
else
{
lastMessageReceivedAt = simTime();
EV << " Send message to Module C.\n";
cMessage *newMsg = new cMessage("Message")
send(newMsg, "out");
sentMessage = true;
}
}
【问题讨论】:
标签: c++ simulation omnet++