Я пытался создать на примере клиентского сервера sumo в C ++, как в ссылке
http://sumo.dlr.de/wiki/TraCI/C%2B%2BTraCIAPI
Я написал функцию для создания полного RedYellowGreenDef, как показано ниже:
std::vector<libsumo::TraCILogic> Client::buildCompletetrafficLogics(std::string tlID, int phaseIndex, int increaseVal)
{
std::vector<libsumo::TraCILogic> logics = trafficlights.getCompleteRedYellowGreenDefinition(tlID);
for (int i = 0; i < (int)logics.size(); ++i)
{
for (int j = 0; j < (int)logics[i].phases.size(); ++j)
{
if (logics[i].currentPhaseIndex = phaseIndex)
{
logics[i].phases[j].duration = logics[i].phases[j].duration + increaseVal; //increase duration by 5 seconds
logics[i].phases[j].duration2 = logics[i].phases[j].duration2+ increaseVal;
}
}
}
return logics;
}
Я вызвал эту функцию в основной функции следующим образом:
//increase duration of phase with index "PhaseIndex" by 5000ms
std::vector<libsumo::TraCILogic> logics = client.buildCompletetrafficLogics(*tlIt, phaseIndex,5000);
libsumo::TraCILogic logic = logics[0];
client.trafficlights.setCompleteRedYellowGreenDefinition(tlID, logic);
где tlID является действительным идентификатором светофора, но я столкнулся со следующим исключением, когда я передал встроенную логику в setCompleteRedYellowGreenDefinition ():
прекращение вызова после создания экземпляра ‘std :: invalid_argument’
what (): Storage :: writeUnsignedByte (): недопустимое значение, не в [0, 255] Прервано (ядро сброшено)
Не могли бы вы помочь мне найти проблему: почему я получил это исключение и как его решить?
Задача ещё не решена.
Других решений пока нет …