-1
我使用OMNeT ++ 4.6,sumo-0.22.0和Veins-4a2。RSU在finish()函数中没有收到发送的消息
在我的方案中,我修改了.rou.xml文件,以便每个节点建立的路径都是从RSU到另一个。节点根据我指定的生成定时器创建消息并将它们存储在缓冲区中。之后,节点根据发送定时器向RSU发送消息(无论是源,目的地还是遇到的RSU)。
我的目标是当每个节点离开模拟时发送它的消息以清空其缓冲区,并且模拟中创建的所有消息都将被发送。
要做到这一点的情况下,我添加了一些指令完成()函数中的节点的应用层:我发送存储在相应节点的缓冲器中的所有数据包这样的:
for (i = 0 ; i < bufferSize ; i++) {
msg = myBuffer.m[i];
wsm->setWsmData(msg.c_str());
sendMessage(wsm->getWsmData());
}
的问题,即在finish()函数中发送的消息不会被RSU接收到,但是当我的模拟中的每个节点都离开时,它会到达他的目的地,这是一个RSU。
我需要了解,请为什么这些消息由RSU这是目标未收到?
是否有另一种解决方案在离开模拟之前发送所有存储的消息?
非常感谢您的回复。那么,有没有办法让节点等待,直到它访问信道并发送所有消息,并在离开模拟之后? – Fariha
该框架目前没有这样的代码。编写它不应该很难,但请记住,网络模拟将不再与道路交通模拟行为相同。这可能(或不可能)成为问题,具体取决于您的模拟模型。 –
现在在我的模拟中,这可能不是问题,我需要做这个场景。我需要知道我是否会将代码写入应用层节点的finish()函数中?你有什么想法,我可以在框架中改变什么?我如何强制节点等待直到发送数据包将通过从RSU收到ACK发送?我可以在finish()方法中使用sleep()函数来等待数据包访问通道并将被发送吗? – Fariha