Я использую Veins3.0 с SUMO-0.21.0 и omnetpp4.4. Я пытался использовать команду отслеживание транспортных средств в TraCI/SUMO. Это описано здесь: http://sumo.dlr.de/wiki/TraCI/Change_GUI_State. Там вы можете прочитать, что Variable View ID Type of the value New Value
для этой команды равно 0xa6 "View #0" string <vehicle id>
.
Итак, я написал новую функцию в TraCICommandInterface.cc
для отслеживания транспортного средства.
void TraCICommandInterface::setVehicleTracking(std::string nodeId) {
uint8_t variableId = VAR_TRACK_VEHICLE;
uint8_t variableType = TYPE_STRING;
TraCIBuffer buf = connection.query(CMD_SET_GUI_VARIABLE, TraCIBuffer() << variableId << "View #0" << variableType << nodeId);
ASSERT(buf.eof());
}
Я использовал некоторые константы из TraCIConstants.h
// track vehicle
#define VAR_TRACK_VEHICLE 0xa6
// command: set GUI variable
#define CMD_SET_GUI_VARIABLE 0xcc
// 8 bit ASCII string
#define TYPE_STRING 0x0C
Функция вызывается из TraCIMobility.h
, что заполняет идентификатор узла getExternalID()
.
void commandTrackVehicle(){
getCommandInterface()->setVehicleTracking(getExternalId());
}
Ошибка возникает, когда я вызываю commandTrackVehicle()
из модуля автомобиля с mobility->commandTrackVehicle();
.
Текст ошибки в SUMO:
error: tcpip::Storage::readIsSafe: want to read 1717063210 byte from Storage, but only 12 remaining
Кто-нибудь знает, как решить эту проблему или получить больше информации об ошибке? Спасибо.