0

私は静脈-4a2を使用しています。まず、車両のみでシナリオを実行しました。ここで、例に RSU を追加しました。すべての RSU がデータを受信し、Omnet++ のモジュール ログにメッセージを表示する必要があります。ノードがデータを受信するときに行ったように、次のように TraCIDemp11p の onData() 関数に太字の行を追加しました。

void TraCIDemoRSU11p::onData(WaveShortMessage* wsm) {

    findHost()->getDisplayString().updateWith("r=16,green");

    annotations->scheduleErase(1, annotations->drawLine(wsm->getSenderPos(), mobi->getCurrentPosition(), "blue"));

    **EV << " I am an RSU and I have received a data !  \n";**

    //if (!sentMessage) sendMessage(wsm->getWsmData());
}

私の問題は、「I am an RSU and I have received a data !」がログ モジュールに表示されないことです。RSU がデータを受信すると、omnet++ のログ モジュールに次のように表示されます。

** Event #4802  t=9.004337832007  RSUExampleScenario.node[4].nic.phy80211p (PhyLayer80211p, id=161), on `data' (Mac80211Pkt, id=669)
node[4]::PhyLayer80211p: AirFrame encapsulated, length: 1326
4

2 に答える 2

1

それが onData 関数に入っていることを確認してください。そのために ASSERT または exit 関数を使用できます。

DBG、EV、または cout を使用してメッセージを出力します

DBG << "Test_DBG: I am an RSU and I have received a data!\n";
EV << "Test_EV: I am an RSU and I have received a data!\n";
std::cout << "Test_cout: I am an RSU and I have received a data!\n"

印刷メッセージを設定した後、1 つのコードを使用してシミュレーションを終了します。

// terminate the simulation with error code 3
   exit(3);

またはASSERTを使用

 ASSERT2(0,"Test: I'm RSU");

シミュレーションがエラーで終了した場合は、onData が実行されていることを確認できます。そうでない場合、onData はコードのどの部分でも呼び出されません。

-申し訳ありませんが、コメントを1つだけ追加する評判がありません-頑張ってください!

于 2016-10-07T15:26:43.550 に答える