在相扑中,我的模拟有一个名为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}}
会是那样的吗?它的确切语法是什么?
答案 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。