2017-04-16 71 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