Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何利用静脉计算路线_C++_Veins_Sumo - Fatal编程技术网

C++ 如何利用静脉计算路线

C++ 如何利用静脉计算路线,c++,veins,sumo,C++,Veins,Sumo,我试图创建一个函数,根据两个参数/道路(起点和终点)计算路线。函数应返回组成管线的边的列表 我知道相扑中存在一个findulote()函数,但我认为它没有在游戏中实现。我试图实现它,但该函数对我不起作用 下面是我的代码 std::string TraCICommandInterface::Vehicle::findRoute(std::string b, std::string e) { uint8_t variableId = CMD_SUBSCRIBE_ROUTE_CONTEXT;

我试图创建一个函数,根据两个参数/道路(起点和终点)计算路线。函数应返回组成管线的边的列表

我知道相扑中存在一个findulote()函数,但我认为它没有在游戏中实现。我试图实现它,但该函数对我不起作用

下面是我的代码

std::string TraCICommandInterface::Vehicle::findRoute(std::string b, std::string e) {
    uint8_t variableId = CMD_SUBSCRIBE_ROUTE_CONTEXT;
    uint8_t variableType = TYPE_COMPOUND;
    uint8_t edgeIdT = TYPE_STRING;
    int32_t count = 3;
    std::string begin = b;
    std::string end = e;
    TraCIBuffer buf = connection->query(CMD_SET_VEHICLE_VARIABLE, TraCIBuffer() << variableId << nodeId << variableType << begin << end << "" << 1 << 0);
    ASSERT(buf.eof());
}
错误消息:

注1:关于路线,事实上,我想使用在sumo上实现的算法选项,例如:dijkstra、astar等


有人能帮我吗?

Findurote不是车辆域中的命令,而是模拟域中的命令,它需要五个参数,请参见,因此您的代码可能应该是这样的(从脑海中编写,未经测试):

std::string TraCICommandInterface::Vehicle::findroote(std::string b,std::string e){
uint8\u t variableId=查找路由;
uint8\u t variableType=类型化合物;
uint8_t STRING t=类型_STRING;
uint8\u t DOUBLE=双联型;
uint8\u t intT=类型为整数;
int32_t计数=5;

TraCIBuffer buf=connection->query(CMD\u GET\u SIM\u变量,TraCIBuffer())那么您希望实现一个算法或使用一个现有的算法吗?另外,请在您的问题中包含任何错误消息。谢谢您的帮助。在这段代码中找不到路由。我将其替换为CMD\u SUBSCRIBE\u ROUTE\u上下文,但在SUMO上观察到另一个错误。“错误:tcpip::Storage::readIsSafe:想从存储器中读取32564字节,但只剩下65字节”。有人知道我如何解决它吗?谢谢!您使用的是哪个SUMO版本吗?您好,我使用的是SUMO 0.32.0FIND_路由,应该在0.32.0中可用。错误消息到底是什么?
traciVehicle->findRoute("167283892#2", "-439375716#1");
std::string TraCICommandInterface::Vehicle::findRoute(std::string b, std::string e) {
    uint8_t variableId = FIND_ROUTE;
    uint8_t variableType = TYPE_COMPOUND;
    uint8_t stringT = TYPE_STRING;
    uint8_t doubleT = TYPE_DOUBLE;
    uint8_t intT = TYPE_INTEGER;
    int32_t count = 5;
    TraCIBuffer buf = connection->query(CMD_GET_SIM_VARIABLE, TraCIBuffer() << variableId << "" << variableType << count <<
           stringT << b << stringT << e << stringT << "" << doubleT << -1. << intT << 0);
    ASSERT(buf.eof());
}