更改车辆目标方法
Change vehicle target method
我在 TraCICommandInterface.cc 文件中创建了一个方法 changeTarget
,我在其中使用了 chageTarget
TraCI 命令来更改目标。我想知道它是否是正确的实现,以及方法中提到的 nodeId
是否与 TraCICommandInterface.h[=21= 的 nodeId
相同].那么我可以使用 nodeId
还是需要使用 getexternalId()
方法来获取车辆 ID?
void TraCICommandInterface::Vehicle::changeTarget(std::string roadId) {
uint8_t variableId = CMD_CHANGETARGET;
uint8_t variableType = TYPE_COMPOUND;
uint8_t edgeIdT = TYPE_STRING;
std::string edgeId = roadId;
TraCIBuffer buf = connection->query(CMD_SET_VEHICLE_VARIABLE, TraCIBuffer() << variableId << nodeId << variableType << edgeId<<edgeIdT);
ASSERT(buf.eof());
}
不,这是不正确的。类型应该总是在值的前面,你不需要在这里复合。所以像下面这样:
uint8_t variableId = CMD_CHANGETARGET;
uint8_t edgeIdT = TYPE_STRING;
TraCIBuffer buf = connection->query(CMD_SET_VEHICLE_VARIABLE, TraCIBuffer() << variableId << nodeId << edgeIdT << roadId);
我在 TraCICommandInterface.cc 文件中创建了一个方法 changeTarget
,我在其中使用了 chageTarget
TraCI 命令来更改目标。我想知道它是否是正确的实现,以及方法中提到的 nodeId
是否与 TraCICommandInterface.h[=21= 的 nodeId
相同].那么我可以使用 nodeId
还是需要使用 getexternalId()
方法来获取车辆 ID?
void TraCICommandInterface::Vehicle::changeTarget(std::string roadId) {
uint8_t variableId = CMD_CHANGETARGET;
uint8_t variableType = TYPE_COMPOUND;
uint8_t edgeIdT = TYPE_STRING;
std::string edgeId = roadId;
TraCIBuffer buf = connection->query(CMD_SET_VEHICLE_VARIABLE, TraCIBuffer() << variableId << nodeId << variableType << edgeId<<edgeIdT);
ASSERT(buf.eof());
}
不,这是不正确的。类型应该总是在值的前面,你不需要在这里复合。所以像下面这样:
uint8_t variableId = CMD_CHANGETARGET;
uint8_t edgeIdT = TYPE_STRING;
TraCIBuffer buf = connection->query(CMD_SET_VEHICLE_VARIABLE, TraCIBuffer() << variableId << nodeId << edgeIdT << roadId);