Omnet++ 如何区分静脉和Omnet中的RSU ID和节点ID++;?

Omnet++ 如何区分静脉和Omnet中的RSU ID和节点ID++;?,omnet++,veins,Omnet++,Veins,我们的静脉模拟有问题。我们正在尝试在演示场景(TraCIDemo11p)中实现一个关于消息扩散的算法,我们的问题是发送WSM消息。我们希望从一个节点(如汽车)向一个特定的RSU发送一条特定的消息。节点通过收集信标消息来了解其邻居,并将发送者的ID和类型存储到缓冲区。问题是,当我们想将消息发送到例如ID为7的RSU时,如果有ID为7的节点,将发送两条消息,因为它们都具有ID 7。在哪里可以更改隐式提供的ID,以便在TraCIDemo11p.cc中区分节点和RSU 因为它们是两个不同的模块,所以节点

我们的静脉模拟有问题。我们正在尝试在演示场景(TraCIDemo11p)中实现一个关于消息扩散的算法,我们的问题是发送WSM消息。我们希望从一个节点(如汽车)向一个特定的RSU发送一条特定的消息。节点通过收集信标消息来了解其邻居,并将发送者的ID和类型存储到缓冲区。问题是,当我们想将消息发送到例如ID为7的RSU时,如果有ID为7的节点,将发送两条消息,因为它们都具有ID 7。在哪里可以更改隐式提供的ID,以便在TraCIDemo11p.cc中区分节点和RSU

因为它们是两个不同的模块,所以节点存储在数组节点[]中,而rsu存储在数组rsu[]中,这就是为什么它们可以具有相同的ID或索引

我们已经尝试在TraCIDemoRSU11p的initialize方法中更改myId属性,但是当消息即将发送时,接收者没有收到它。通过分析汽车接收到的信标信息,我们可以判断RSU具有修改的ID,例如50。然后,我们使用populateWSM方法并将rcvID参数声明为50,但RSU上从未接收到消息


我们使用的是Velse4.7.1。和OmNet++5.4.1。

你说得对:Velse4.7.1使用主机模块的索引(即“节点[7]”中的7)作为网卡的“MAC地址”(请参阅)。较新的版本,例如Veines 5.0-Alpha 2,使用了完全灵活的方案;此外,它默认使用网卡的OMNeT++模块id(请参阅),这不仅允许区分具有相同索引的主机,还允许区分这些主机中的多个网卡


如果切换到Velse 5对您来说不是一个选项,那么回接此更改应该很简单。

谢谢您的回复,Sommer先生。此时此刻,切换到第5条不是我们的选择。您建议我们如何在当前版本中解决这个问题?当时,我不太了解“后移植”的情况。我的建议是找到更改上述行的git提交,并在您的代码库中进行相同的更改。已解决。谢谢你抽出时间,索默先生。