2017-03-03 2 views
-1

스모에서 내 시뮬레이션에는 539320442이라는 신호등이 있습니다.스모에 존재하는 신호등을 얻고 정맥에서 위상을 바꾸려면 어떻게해야합니까?

RSU (정맥에 존재하는)가 신호등의 위상을 변경하기를 원합니다. 539320442 및 사용하여 단계를 변경 :

void TraCICommandInterface::Traffic_light::setPhase(string, integer) 

TraCICommandInterface::Trafficlight* RSU_traffic_light; 

는 이제 ID를 가지고이 신호등을 좀하고 싶습니다 : 그것은 다음과 같이

그래서 나는 TraCIDemoRSU11p.hTrafficlight 변수를 생성

문제는 TraCIDemoRSU11p.cc에서 신호등을 가져 와서 저장할 수 없다는 것입니다.

RSU_traffic_light; 

나는이 신호등을 얻고 RSU_traffic_light에 저장할 수있는 방법 그래서 궁금 해서요 :

RSU_traffic_light = getTrafficLightbyID("539320442"); 

는 그런 일을 할 것인가? 정확한 구문은 무엇입니까?

+0

"코드 일부가 작동하지 않았습니다"라고 씁니다. 더 자세히 설명해 주시겠습니까? 대안은 무엇을 시도 했습니까? 너는 무엇을 기대 했는가? 어떻게 된 거예요? –

+0

다시 편집하겠습니다. 주된 문제가있는 부분을 정확히 발견했습니다. – pb772

+1

당신은'TracICommandInterface :: Traffic_light :: setPhase (string, integer)'의 시그니처를 가진 메소드를 사용하려고 시도했다고 언급했습니다. Veins에는 그러한 방법이 없습니다. 'Traffic_light' 클래스도 존재하지 않습니다. 어쩌면 당신은 다른 소프트웨어 (어쩌면 SUMO C++ API?)의 문서화로 갈 것입니다. –

답변

2

교통 신호등의 프로그램 및 위상 설정은 Veins 4.5에 포함 된 간단한 테스트 응용 프로그램의 기능입니다.

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

시나리오 가능성 것이다,이 the test scenario의 SUMO 신호등 ID와 위상 ID를 사용하는

#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); 

주, 즉 : 당신은 신호등 단계를 변경하는 방법을 볼 수 its source code을 참조 할 수 있습니다 다른 교통 신호등 ID 및 위상 ID를 사용하십시오.