修改运行时显示
This commit is contained in:
@@ -219,6 +219,27 @@ class MissionExecutorV3:
|
||||
"photos_back": 0,
|
||||
})
|
||||
|
||||
# 初始化点位状态和机器状态(实时推送给前端)
|
||||
self.report["point_status"] = {}
|
||||
for _pr in range(rows + 1):
|
||||
for _c in range(cols):
|
||||
pk = f"{_pr}_{_c}"
|
||||
has_f = _pr < rows and MissionExecutorV3._has_machine(grid, _pr, _c)
|
||||
has_b = _pr > 0 and MissionExecutorV3._has_machine(grid, _pr - 1, _c)
|
||||
self.report["point_status"][pk] = "pending" if (has_f or has_b) else "skipped"
|
||||
|
||||
self.report["machine_status"] = {}
|
||||
for _r in range(rows):
|
||||
for _c in range(cols):
|
||||
if MissionExecutorV3._has_machine(grid, _r, _c):
|
||||
self.report["machine_status"][f"{_r}_{_c}"] = {
|
||||
"has_machine": True,
|
||||
"qr": "pending", "qr_val": None,
|
||||
"front": "pending", "front_cnt": 0,
|
||||
"back": "pending", "back_cnt": 0,
|
||||
"status": "pending", "step": "等待",
|
||||
}
|
||||
|
||||
self._log(f"📍 点位蛇形路径: {len(path)} 个点位, {total_machines} 台机器")
|
||||
|
||||
# 任务步骤控制开关
|
||||
@@ -300,12 +321,19 @@ class MissionExecutorV3:
|
||||
except Exception as e:
|
||||
self._log(f" ⚠️ 机械臂初始化失败: {e}")
|
||||
|
||||
# 更新点位状态:开始导航
|
||||
pk = f"{pr}_{c}"
|
||||
if pk in self.report.get("point_status", {}):
|
||||
self.report["point_status"][pk] = "active"
|
||||
|
||||
# 导航到该点位的坐标
|
||||
nav_ok = False
|
||||
if opt_agv_move:
|
||||
# 找该点位的任意有效坐标(正面/背面坐标相同)
|
||||
pos = MissionExecutorV3._find_any_position(positions, pr, c)
|
||||
if pos and MissionExecutorV3._has_coords(pos):
|
||||
if not self._navigate(pos, f"点位({pr},{c})"):
|
||||
nav_ok = self._navigate(pos, f"点位({pr},{c})")
|
||||
if not nav_ok:
|
||||
self._log(f"⚠️ 导航失败,尝试继续")
|
||||
choice = self._wait_error(f"点位({pr},{c})导航失败")
|
||||
if choice == "abort":
|
||||
@@ -314,11 +342,21 @@ class MissionExecutorV3:
|
||||
self._log(f"⚠️ 点位({pr},{c})无有效坐标")
|
||||
else:
|
||||
self._log(" ⏭️ 跳过AGV移动")
|
||||
nav_ok = True # 无移动视为到达
|
||||
|
||||
# 更新点位状态:到达
|
||||
if pk in self.report.get("point_status", {}):
|
||||
self.report["point_status"][pk] = "done"
|
||||
|
||||
# --- 正面操作(机器 pr,c 的正面) ---
|
||||
qr_value = None
|
||||
if has_front and not self._stop.is_set():
|
||||
self._wait_pause()
|
||||
# 更新机器状态:正面开始
|
||||
mk = f"{pr}_{c}"
|
||||
if mk in self.report.get("machine_status", {}):
|
||||
self.report["machine_status"][mk]["status"] = "active"
|
||||
self.report["machine_status"][mk]["step"] = "正面扫码"
|
||||
if opt_qr_scan:
|
||||
qr_value = self._scan_qr_with_poses(qr_configs)
|
||||
if self._stop.is_set():
|
||||
@@ -326,6 +364,12 @@ class MissionExecutorV3:
|
||||
else:
|
||||
self._log(" ⏭️ 跳过二维码识别(正面)")
|
||||
qr_cache[(pr, c)] = qr_value
|
||||
# 更新机器状态:扫码完成
|
||||
mk2 = f"{pr}_{c}"
|
||||
if mk2 in self.report.get("machine_status", {}):
|
||||
self.report["machine_status"][mk2]["qr"] = "done" if qr_value else "skipped"
|
||||
self.report["machine_status"][mk2]["qr_val"] = qr_value
|
||||
self.report["machine_status"][mk2]["step"] = "正面拍照"
|
||||
|
||||
task = self._get_task(pr, c)
|
||||
if task and qr_value:
|
||||
@@ -345,11 +389,20 @@ class MissionExecutorV3:
|
||||
else:
|
||||
self._log(" ⏭️ 跳过正面拍照")
|
||||
completed_actions += 1
|
||||
# 更新机器状态:正面拍照完成
|
||||
mk3 = f"{pr}_{c}"
|
||||
if mk3 in self.report.get("machine_status", {}):
|
||||
self.report["machine_status"][mk3]["front"] = "done" if opt_front_photo else "skipped"
|
||||
self.report["machine_status"][mk3]["front_cnt"] = self.report["machine_status"][mk3].get("front_cnt", 0) + 1
|
||||
|
||||
# --- 背面操作(机器 pr-1,c 的背面) ---
|
||||
if has_back and not self._stop.is_set():
|
||||
self._wait_pause()
|
||||
back_qr = qr_cache.get((pr - 1, c), "unknown")
|
||||
# 更新机器状态:背面开始
|
||||
mk_b = f"{pr-1}_{c}"
|
||||
if mk_b in self.report.get("machine_status", {}):
|
||||
self.report["machine_status"][mk_b]["step"] = "背面拍照"
|
||||
|
||||
task = self._get_task(pr - 1, c)
|
||||
if task:
|
||||
@@ -367,6 +420,13 @@ class MissionExecutorV3:
|
||||
else:
|
||||
self._log(" ⏭️ 跳过背面拍照")
|
||||
completed_actions += 1
|
||||
# 更新机器状态:背面完成
|
||||
mk_b2 = f"{pr-1}_{c}"
|
||||
if mk_b2 in self.report.get("machine_status", {}):
|
||||
self.report["machine_status"][mk_b2]["back"] = "done" if opt_back_photo else "skipped"
|
||||
self.report["machine_status"][mk_b2]["back_cnt"] = self.report["machine_status"][mk_b2].get("back_cnt", 0) + 1
|
||||
self.report["machine_status"][mk_b2]["status"] = "completed"
|
||||
self.report["machine_status"][mk_b2]["step"] = "完成"
|
||||
if task:
|
||||
task["status"] = "completed"
|
||||
task["step"] = "完成"
|
||||
|
||||
Reference in New Issue
Block a user