0

我使用静脉-4a2。首先,我执行了一个只有车辆的 scnario。现在我在示例中添加了 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());
}

我的问题是“我是 RSU,我收到了数据!”没有显示在日志模块中。当 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 或退出功能。

使用 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"

设置打印消息后,使用一个代码终止模拟

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

或使用断言

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

如果模拟因错误终止,您将确定 onData 已执行,如果没有,则不会在代码的任何部分调用 onData。

- 抱歉,我没有名声可以只添加一条评论 - 祝你好运!

于 2016-10-07T15:26:43.550 回答
0

我不知道你是否知道 onData 是如何工作的。

在默认情况下,仅在具有名称数据的一个包到达一个汽车/节点或 RSU(通过 handleLowerMsg)时才调用 onData 。

对于您在 RSU 中的情况,需要:

  1. 汽车/节点需要具有 true的appl.sendData

  2. 调用带有名称数据的发送包

  3. 与汽车/节点和 RSU的通信范围。默认值为 1 公里直径。

一个好的测试是使用randomTrips.py创建一个小网格并将 RSU 设置在中心,所有节点都可以实现它。

- 一条评论很大,所以我提出了一个新的答案 - 祝你好运!

于 2016-10-10T15:09:53.980 回答