// 得到agv的路綫 for (int i = 0; i < agvs.size(); i++) { if (agvs[i].getLoad() == true) { // 如果是负载的状态 if (agvs[i].getCurrentX() == agvs[i].getEndX() && agvs[i].getCurrentY() == agvs[i].getEndY()) { // 如果到达终点 agvs[i].setLoad(false); // 设置为空载状态 agvs[i].setState(true); std::cout << "agv__id :" << agvs[i].getid() << " ,agv_get_task_id :" << agvs[i].get_task_id() << endl; for (int j = 0; j < tasks.size(); j++) { if (tasks[j].id == agvs[i].get_task_id()) { completed_task_index = j; break; } } if (completed_task_index != -1) { tasks[completed_task_index].completed = 2; } task_to_agv(); // 更新任务分配 update(); // 更新AGV状态 } else { // 否则行驶到终点 Node* start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY()); Node* end_node1 = new Node(agvs[i].getEndX(), agvs[i].getEndY()); std::vector<Node*> path = astar.getPath(start_node, end_node1); path.erase(path.begin()); paths[i] = path; } } else { // 如果是空载的状态 if (agvs[i].getCurrentX() == agvs[i].getStartX() && agvs[i].getCurrentY() == agvs[i].getStartY()) { // 如果到达起点 agvs[i].setLoad(true); // 设置为负载状态 } else { // 否则行驶到起点 Node* start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY()); Node* end_node = new Node(agvs[i].getStartX(), agvs[i].getStartY()); std::vector<Node*> path = astar.getPath(start_node, end_node); path.erase(path.begin()); paths[i] = path; } } }, if (! paths[i].empty()) { // 检查 paths 是否有数据 std:: cout << "wsn" << endl; painter.setPen(QPen(Qt::red, 5)); // 设置画笔颜色和宽度 for (int i = 0; i < paths.size(); i++) { // 遍历每个子数组 painter.setPen(QPen(Qt::red, 5)); // 设置画笔颜色和宽度 for (int j = 0; j < paths[i].size() - 1; j++) { // 遍历每个子数组中的点 QPoint start(paths[i][j]->x * 25 + 200, paths[i][j]->y * 25 + 50); QPoint end(paths[i][j + 1]->x * 25 + 200, paths[i][j + 1]->y * 25 + 50); painter.drawLine(start, end); } } },報錯:一運行就白屏卡死,怎麽修改
时间: 2024-01-20 11:03:44 浏览: 69
AGVS.rar_AGVS调度_gulf5j4_scheduling AGV_wpf agv调度系统_调度控制
5星 · 资源好评率100%
首先,要确定报错原因,可以在代码中添加一些输出语句来进行调试,看看程序在哪里卡住了。比如在代码中添加一些这样的语句:
```
std::cout << "Debug1" << std::endl;
```
然后逐步检查程序执行到哪一步就卡住了。
另外,在你的第二段代码中,你有两个嵌套的 for 循环,但是你在内部循环中使用了 i 这个变量,这个变量已经在外部循环中被使用了。这个问题可能会导致程序出错。可以尝试修改为:
```
for (int i = 0; i < paths.size(); i++) {
painter.setPen(QPen(Qt::red, 5)); // 设置画笔颜色和宽度
for (int j = 0; j < paths[i].size() - 1; j++) { // 遍历每个子数组中的点
QPoint start(paths[i][j]->x * 25 + 200, paths[i][j]->y * 25 + 50);
QPoint end(paths[i][j + 1]->x * 25 + 200, paths[i][j + 1]->y * 25 + 50);
painter.drawLine(start, end);
}
}
```
最后,如果你的程序还是无法正常运行,可以贴出完整的代码,方便我们更好地帮助你解决问题。
阅读全文