1

我想使用一些似乎没有在 omnet++/veins 中实现的 sumo/traci 命令,例如:

  • 交通灯命令 setRedYellowGreenState(tlsID, state) 例如
  • 连接命令
  • 和其他命令

能够从 omnet++/veins 使用这些命令的最简单方法是什么?

非常感谢你的帮助。问候 :)

4

1 回答 1

2

您可以在 TraCICommandInterface.cc 中找到与 SUMO 交互的现有客户端源代码,例如设置一个 TL 程序

TraCIBuffer buf = connection->query(CMD_SET_TL_VARIABLE, TraCIBuffer()
  << static_cast<uint8_t>(TL_PROGRAM) 
  << trafficLightId 
  << static_cast<uint8_t>(TYPE_STRING)
  << program
);

对应的服务器源代码可以在TraCIServerAPI_TLS.cpp 中找到,例如设置一个 TL 程序

// variable & id
int variable = inputStorage.readUnsignedByte();
std::string id = inputStorage.readString();
// [...] case TL_PROGRAM:
server.readTypeCheckingString(inputStorage, subID)

vars.switchTo(tlsControl, subID);

通过调查服务器如何准备与客户端交互(以及客户端如何与服务器交互),您应该能够根据您的意愿扩展客户端。

于 2016-04-20T13:27:25.747 回答