在VEINS 4.4中,可以通过TraCIMobility定义的“Mobility”模块访问应用层车辆的当前位置(例如TraCIDemo11p)。
我按照相同的方法访问较低层的移动模块(MAC1609_4.cc),我在初始化函数的第0阶段添加了以下语句:
TraCIMobility* mobility = TraCIMobilityAccess().get(getParentModule());
但是,我没有得到任何编译错误,但是当模拟开始时OMNET抛出错误并且它给出了以下错误。
模块中的错误(MAC1609_4)RSUExampleScenario.node [0] .nic.mac1609_4(id = 12)在事件#2,t = 0.1:断言:条件traci false在函数get,\ veins / modules / mobility / traci / TraCIMobility中。 h第193行
我一直在寻找不同的解决方案,但是,我仍然无法解决这个问题。
相关文章是:
How to access TraCI command interface from TraCIDemoRSU11p in Veins Car2X simulator?
Transmission of vehicular status in Veins
您正在尝试访问Mac1609_4的父模块中的TraCIMobility子模块。然而,这不是Car而是Nic80211p,它没有这样的子模块,因此,失败的断言。
当你在层次结构中增加一个额外的层时它应该工作,然后你以root身份使用Car模块来查找相应的子模块:
TraCIMobility* mobility = TraCIMobilityAccess().get(getParentModule()->getParentModule());
请参阅Car模块和Nic80211p模块以供参考: