2017-04-16 39 views
0

我试图发送ACK到节点时,我收到消息从RSU到节点发送的ACK。我能够获得帧ID,无法弄清楚如何将这个帧ID包含在我的消息中并进行广播?任何指针?这将是有益的。谢谢。在静脉

更新:这是我正在尝试做的,当在函数BaseWaveApplLayer :: handleLowerMsg中的RSU收到一条消息时,我正在提取帧ID并发送Ack。我正面临的问题是在使用sendDown时,我收到错误,表示事件已计划发送。如何正确安排消息?我正在使用sendDown(味精)。

,我没有得到正确的帧ID,我用encapsulatedFrame ID,但它给了不同的价值,我如何才能从frameid或BasicSafetyMessage cMessage派生而来?

代码:

void BaseWaveApplLayer::handleLowerMsg(cMessage* msg) { 
WaveShortMessage* wsm = dynamic_cast<WaveShortMessage*>(msg); 
ASSERT(wsm); 
if (BasicSafetyMessage* bsm = dynamic_cast<BasicSafetyMessage*>(wsm)) { 
    receivedBSMs++; 
    onBSM(bsm); 
    if(isBaseStation()) 
    { 
     BasicSafetyMessage* Ack= new BasicSafetyMessage(); 
     populateWSM(Ack); 
     Ack->setWsmData(getFrameId(bsm)); 
     EV<<" Sending Ack Frame ID"<<getFrameId(bsm); 
     sendDown(Ack); 
    } 
    else 
    { 
     EV<<"Received FrameId"<<bsm->getWsmData(); 
     std::string str(bsm->getWsmData()); 
     int FrameId= std::atoi(str.c_str()); 
     checkIds(FrameId); 
    } 

}} 

回答

0

您需要创建它增加了frameId作为参数承认作为一个参数一个新的消息类型。在接收器上,您可以将其值与您发送的数据包进行比较。查看OMNeT ++ user manual了解如何创建新消息。有关提示,另见this post

+0

喜@朱利安 - heinovski,因为我使用的脉,我打电话populateWSM(WSM)功能,我改变WSM数据接收到的frameId。我面临的问题是发送此消息。创建此消息后,我调用sendDown,但当我单击Run时,我的应用程序崩溃。 – Sam1324

+0

请使用此信息和相应的代码和错误消息片段更新您的帖子。 –

+0

嗨,这是我想做的事,当RSU接收的功能BaseWaveApplLayer消息:: handleLowerMsg我提取帧ID和发送的讯息。我正面临的问题是在使用sendDown时出现错误,表示已经计划发送消息。如何正确安排消息?我是usD sendDown(味精)。 – Sam1324