2017-02-21 78 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(); 

希望這可以幫助別人。

乾杯。