APP:错误:收到未知类型的自消息



我使用的是Veins 5.0框架版本。每个节点发送一个self消息,将其自己定义的消息发送给其他节点。

但是,以下错误日志会在节点上输出。错误已输出,但以下代码似乎运行良好。

APP:错误:收到未知类型的自消息!名称:mR_TQ事件

每个文件的代码部分的结构如下。

RSU.h

...
enum ApplMessageKinds
{
SEND_FRTQ_EVT,
SEND_ENTP_EVT,
SEND_ENTC_EVT, 
SEND_MRTQ_EVT
};
...

RSU.cc

...
void RSU::initialize(int stage)
{
if(stage == 0)
{
...
frtqMsg = new cMessage("FR_TQ MSG", SEND_FRTQ_EVT);
entpMsg = new cMessage("EN_TP MSG", SEND_ENTP_EVT);
mrtqMsg = new cMessage("mR_TQ MSG", SEND_MRTQ_EVT);
}
else if(stage == 1)
{
if(frtqMsg -> isScheduled()) { cancelEvent(frtqMsg); }
else { scheduleAt(simTime() + 3.0, frtqMsg);
if(entpMsg -> isScheduled()) { cancelEvent(entpMsg); }
else { scheduleAt(simTime() + 2.0, entpMsg);
if(mrtqMsg -> isScheduled()) { cancelEvent(mrtqMsg); }
else { scheduleAt(simTime(), mrtqMsg);
}
}
void RSU::handleSelfMsg(cMessage* msg)
{
DemoBaseApplLayer::handleSelfMsg(msg);
switch(msg -> getKind())
{
case SEND_FRTQ_EVT:
{
...
break;
}
case SEND_ENTP_EVT:
{
...
break;
}
case SEND_MRTQ_EVT:
{
...
break;
}
}
}

许多节点同时发送和接收消息,但这是否相关?我认为不存在语法问题,但我不明白为什么会出现这个问题。

上述错误来自DemoBaseApplLayer::handleSelfMsg(msg)。只有在您的switch中未找到匹配的种类时,才能使用此方法,即:

void RSU::handleSelfMsg(cMessage* msg)
{
switch(msg -> getKind())
{
case SEND_FRTQ_EVT:
{
...
break;
}
case SEND_ENTP_EVT:
{
...
break;
}
case SEND_MRTQ_EVT:
{
...
break;
}
default: {
DemoBaseApplLayer::handleSelfMsg(msg);
break;
}
}
}

最新更新