2017-02-21 101 views
0

我想知道如何开始编写一个程序,当车辆靠近RSU时能够发送消息。 首先,我仍然对一些定义感到困惑,但是,一点一点地,我想我会学习静脉。如何从TraCIDem11p.cc获取RSU坐标?

​​

我发现这个线程这部分代码:Getting the location of two different modules

但还是有一些问题:

1)Module是什么样的对象?我猜想TraCIMobility*

2)simulation怎么样?我不知道。

那么,有谁能请先向我解释如何获得在TraCIDemo11p.cc RSU坐标?

谢谢!

+0

StackOverflow是关于寻找(良好)问题的好答案的。你的问题很难找到一个好的答案,因为它要求多种不同的东西。为了尽可能地帮助尽可能多的人,您是否介意将每篇文章限制为只有一个问题,并尽可能一般地说明这个问题? (例如,“给出两个Veins'Coord'对象,我如何计算它们的距离?”) –

+0

好的,谢谢你的建议。我将开始询问如何从TraCIDemo11p.cc获取RSU坐标,我认为在获得RSU坐标后,我可以自己完成其他部分。 – pb772

回答

2

如果调查静脉4.4教程模拟(例如,通过的OMNeT ++的TkEnv运行它),你会看到rsu[0]包含一个名为mobility子模块是BaseMobility类型。如果您调查BaseMobility课程,您会看到它有一个方法getCurrentPosition()。大概通过阅读OMNeT ++用户手册,您已经知道如何获得指向模拟中任何模块的指针。

把这些知识放在一起,你已经找到了一种方法(有许多可能的方法)来获得静脉模拟中(指定)节点的位置。

假设你正在使用静脉4.4,下面的代码可以通过任何的OMNeT ++模块中的模拟执行得到一个名为rsu[0]节点的位置:

Coord pos = check_and_cast<BaseMobility*>(getSimulation()->getModuleByPath("rsu[0].mobility"))->getCurrentPosition(); 
0

此外,如果你需要一个动态的方式获取RSU坐标。主要是,如果你有一个以上的RSU的场景中,你可以使用“findSubModule”

BaseMobility *baseMob; 
baseMob = FindModule<BaseMobility*>::findSubModule(getParentModule()); 
Coord rsuCoord = baseMob->getCurrentPosition(); 

希望这可以帮助别人。

干杯。