OMNET++中如何使用msg自定義消息/報文
知乎不能直接粘貼圖片,我只好保留了文字,不想每次都重新上傳了。如果要看原文的,請點:如何使用msg自定義消息/報文
------------------------------------------------------
請關注公眾號:薇薇驛站,獲得最新教程。
公眾號功能:不定期更新OMNET++相關資料,關注者越多,動力越多。偶爾會發點吐槽文。【加】近期想增加更新其他教育類的信息~~~~
課程導引:
在通信模擬中,傳輸的消息通常比較複雜,有些協議中,對於消息的格式都有定義,例如:消息中包含校驗碼、目的節點地址等信息。那麼,在OMNET++中如何實現這一定義呢?本文將詳細講解。
註:本文以OMNET++提供的sample/tictoc中的tictoc13常式為例進行說明。
目錄:
一、定義消息的主要步驟
二、自定義消息的相關函數及使用
三、模擬分析
課程詳解:
一、定義消息的主要步驟:
1、新建MSG文件:選中需要創建文件的項目 > 右鍵菜單 > 新建 > Message Definition。
2、定義MSG的語法:message 類定義,需要使用的參數可以直接在類中定義,如下圖所示,也可直接賦初值。參數的類型可以根據用戶自行定義,例如可以是記錄傳輸時間的simtime_t類型等。
3、編譯項目,編譯後會出現於MSG文件相關的.cc和.h文件:
4、節點定義的C++文件中,頭文件需要引用步驟3中生成的msg編譯的頭文件:#include "tictoc13_m.h"
5、完成上述步驟後就可以在節點定義文件中使用該msg了,例如:virtual TicTocMsg13 *generateMessage();
二、自定義消息的相關函數及使用:
1、定義一個msg:
TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);
註:與一般的C++參數定義相同。
2、獲取自定義消息中的參數值:
ttmsg->getHopCount();
註: hopCount是自定義消息類型TicTocMsg13中的一個子參數,通過get+參數名稱,可以獲取該參數的具體值。注意,在使用get時,需要將參數的首字母大寫。
3、給自定義消息中的參數賦值:
msg->setSource(src);
註: Source是自定義消息類型TicTocMsg13中的一個子參數,通過set+參數名稱,可以給該參數的賦值。注意,在使用set時,需要將參數的首字母大寫。
4、作為函數的返回值
TicTocMsg13 *generateMessage(); //定義函數時,設定返回值類型
5、作為函數的參數
Txc13::forwardMessage(TicTocMsg13 *msg)
三、模擬分析
本文講解中以sample/tictoc中的tictoc13作為例子,所以,本節講解該常式的模擬過程。
1、模擬界面:注意左邊的導覽欄中消息的類型是TicTocMsg13。
2、模擬結果:模擬中,節點tic[0]要傳輸消息到tic[5],消息中包含源節點、目的節點、以及跳數信息。注意下圖的最後一行,顯示了msg中記錄的從節點0到節點5需要的跳數。
推薦閱讀:
※卡車吊機的運動和力學
※千篇一律的模塊化編程遊戲——《while True: learn()》
※windows下hspice模擬環境安裝
※論FPGA模擬重要性
※國產單機遊戲波西亞時光名列Steam榜單第四,僅次於GTA5,國產單機遊戲的希望?