APP: Error: Got Self Message of unknown kind

APP: Error: Got Self Message of unknown kind

我正在使用 Veins 5.0 框架版本。各节点发送自消息向其他节点发送自己定义的消息。

但是节点上输出如下错误日志。错误输出了,但是下面的代码好像运行没问题。

APP: Error: Got Self Message of unknown kind! Name: mR_TQ Event

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

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;
         }

    }
}