如何获得相扑中存在的红绿灯并改变静脉中的相位?

时间:2017-03-03 09:02:12

标签: omnet++ veins

在相扑中,我的模拟有一个名为Trafficlight的红绿灯。

我希望RSU(存在于静脉中)改变此交通信号灯的阶段。

所以我在TraCIDemoRSU11p.h中创建了一个TraCICommandInterface::Trafficlight* RSU_traffic_light; 变量,如下所示:

539320442

现在,我希望获得ID为void TraCICommandInterface::Traffic_light::setPhase(string, integer) 的交通灯,并使用以下方式更改其相位:

TraCIDemoRSU11p.cc

问题在于RSU_traffic_light; 我无法获得红绿灯并将其保存在:

RSU_traffic_light

所以我想知道如何获得这个红绿灯并将其保存在RSU_traffic_light = getTrafficLightbyID("539320442");

{{1}}

会是那样的吗?它的确切语法是什么?

1 个答案:

答案 0 :(得分:2)

设置交通信号灯的程序和阶段是Veins 4.5中包含的简单测试应用程序。您可以参考its source code查看它如何改变红绿灯阶段:

#include "veins/modules/mobility/traci/TraCIMobility.h"
#include "veins/modules/mobility/traci/TraCICommandInterface.h"

TraCIMobility* mobility;
TraCICommandInterface* traci;

mobility = TraCIMobilityAccess().get(getParentModule());
traci = mobility->getCommandInterface();
traci->trafficlight("10").setProgram("myProgramGreenRed");
traci->trafficlight("10").setPhaseIndex(1);

请注意,这会使用SUMO红绿灯ID和相位ID the test scenario,即

<tlLogic id="10" type="static" programID="myProgramRed" offset="0">
 <phase duration="999" state="GggGGgrrr"/>
 <phase duration="999" state="GggGGgrrr"/>
</tlLogic>

您的方案可能会使用不同的红绿灯ID和阶段ID。