Я хотел бы знать, почему я могу создать этот проект, но как только RSU получает сообщение, я получаю сообщение об ошибке 139. Даже если я попытаюсь решить, удалив код, вставленный в функцию onData, и снова запустил проект, все равно не Работа.
TraCIDemoRSU11p.h
TraCIScenarioManager* manager;
TraCICommandInterface* traci;
TraCIDemoRSU11p.cc
void TraCIDemoRSU11p::initialize(int stage)
{
BaseWaveApplLayer::initialize(stage);
if (stage == 0) {
manager = TraCIScenarioManagerAccess().get();
traci = manager->getCommandInterface();
traci->trafficlight("0").setProgram("tram_is_not_passing");
}
}
void TraCIDemoRSU11p::onData(WaveShortMessage* wsm)
{
traci->trafficlight("0").setProgram("tram_is_passing");
}
версия veins - 4.4, а версия omnet ++ - 5. Я думаю, проблема может заключаться в том, как я получил интерфейс traci в функции инициализации, может ли кто-нибудь объяснить, как два модуля используют интерфейс traci одновременно?
Редактировать:
По запросу я добавляю дополнительную информацию к вопросу.
Cross.net.xml
....
<tlLogic id="0" type="static" programID="1" offset="0">
<phase duration="500" state="rGrG"/>
</tlLogic>
....
Cross.tls.xml
<tls>
<tlLogic id="0" type="static" programID="tram_is_passing" offset="0">
<phase duration="4" state="ryry"/>
<phase duration="20" state="GrGr"/>
</tlLogic>
<tlLogic id="0" type="static" programID="tram_is_not_passing" offset="0">
<phase duration="999" state="rGrG"/>
</tlLogic>
</tls>