fix bug :任务状态没有正确更新为 COMPLETED
This commit is contained in:
parent
fa779cb512
commit
f3fc9be86b
@ -39,6 +39,9 @@ class TaskManager
|
||||
int mode = 0, int duration = 0, int count = 0,
|
||||
const std::vector<ROUTE_INFO>& routeInfos = std::vector<ROUTE_INFO>());
|
||||
|
||||
// 只更新当前任务的状态
|
||||
void updateCurrentTaskStatus(TaskStatus status);
|
||||
|
||||
// 获取当前任务名称
|
||||
std::string getCurrentTaskName();
|
||||
|
||||
|
||||
@ -147,6 +147,13 @@ ROUTE_INFO TaskManager::getCurrentRouteInfo()
|
||||
return ROUTE_INFO();
|
||||
}
|
||||
|
||||
void TaskManager::updateCurrentTaskStatus(TaskStatus status)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex_);
|
||||
current_task_.status = status;
|
||||
LOG_INFO("当前任务状态更新为: %d", status);
|
||||
}
|
||||
|
||||
std::string TaskManager::getCurrentTaskName()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex_);
|
||||
|
||||
@ -588,9 +588,10 @@ class TaskManagerNode : public rclcpp::Node
|
||||
dst << src.rdbuf();
|
||||
LOG_INFO("路径文件复制成功");
|
||||
|
||||
// 重新设置状态为 RUNNING,让 PL 层继续工作
|
||||
// 同时更新两个状态,保持任务继续运行
|
||||
task_manager.setTaskStatus(1);
|
||||
// 定时器会自动发布任务消息,PL 层会收到 task_status=1 并重新加载路径
|
||||
task_manager.updateCurrentTaskStatus(TaskStatus::RUNNING);
|
||||
// 定时器会自动发布任务消息,PL 层会重新加载路径
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -598,7 +599,19 @@ class TaskManagerNode : public rclcpp::Node
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果没有下一条路径,保持 COMPLETED 状态
|
||||
else
|
||||
{
|
||||
// 最后一条路径完成,更新任务管理器内部状态为 COMPLETED
|
||||
LOG_INFO("已完成全部路径,任务结束");
|
||||
task_manager.setTaskStatus(TaskStatus::COMPLETED);
|
||||
task_manager.updateCurrentTaskStatus(TaskStatus::COMPLETED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果不是 COMPLETED 状态,直接同步更新任务管理器的状态
|
||||
task_manager.setTaskStatus(msg->task_status);
|
||||
task_manager.updateCurrentTaskStatus(status_up);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Loading…
Reference in New Issue
Block a user