From 3460128b4722b53bf92551fb00ce276177efc003 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 28 七月 2025 10:22:34 +0800
Subject: [PATCH] 1..再次修改调度逻辑,G2和G1分别进入Bonder的间隔不要太长,防止G2先进入Bonder,等待烘烤中的G1太久,在高温Bonder下出问题;

---
 SourceCode/Bond/Servo/CMaster.cpp |  238 +++++++----------------------------------------------------
 1 files changed, 28 insertions(+), 210 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 5b6d6e9..9b78a9a 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -563,260 +563,86 @@
 				}
 
 			PORT_PUT:
-				if (m_pActiveRobotTask != nullptr) {
-					m_pActiveRobotTask->pick();
-					std::string strDescription = m_pActiveRobotTask->getDescription();
-					unlock();
-					if (m_listener.onRobotTaskEvent != nullptr) {
-						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-					}
-					LOGI("创建新任务<%s>...", strDescription.c_str());
-					continue;
-				}
+				CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 
 
 				// Measurement NG -> LoadPort
 				// NG回原位
 				if (!rmd.armState[1]) {
 					m_pActiveRobotTask = createTransferTask_restore(pMeasurement, pLoadPorts);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建Measurement回退任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
-
-
 
 
 				// BakeCooling ->Measurement
 				if (!rmd.armState[0]) {
 					m_pActiveRobotTask = createTransferTask_bakecooling_to_measurement(pBakeCooling, pMeasurement);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
-
 
 				
 				// BakeCooling内部
 				// Bake -> Cooling
 				if (!rmd.armState[0]) {
 					m_pActiveRobotTask = createTransferTask_bake_to_cooling(pBakeCooling);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
 
 
 				// Bonder -> BakeCooling
 				if (!rmd.armState[0]) {
 					m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder1, pBakeCooling);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
 
 				if (!rmd.armState[0]) {
 					m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder2, pBakeCooling);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
 
 
 				// Fliper(G2) -> Bonder
+				auto pSrcSlot = pVacuumBake->getProcessedSlot(primaryType);
+				if (pSrcSlot != nullptr && !rmd.armState[1] && !pBonder1->hasBondClass()) {
+					m_pActiveRobotTask = createTransferTask(pFliper, pBonder1, primaryType, secondaryType, 2);
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
+				}
+				if (pSrcSlot != nullptr && !rmd.armState[1] && !pBonder2->hasBondClass()) {
+					m_pActiveRobotTask = createTransferTask(pFliper, pBonder2, primaryType, secondaryType, 2);
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
+				}
+
+
 				// VacuumBake(G1) -> Bonder
-				SERVO::CRobotTask* tempTask[2] = {nullptr, nullptr};
-				if (!rmd.armState[1] && !pBonder1->hasBondClass()) {
-					tempTask[0] = createTransferTask(pFliper, pBonder1, primaryType, secondaryType, 2);
-					/*
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
-					*/
-				}
-
 				if (!rmd.armState[0] && !pBonder1->hasBondClass()) {
-					tempTask[1] = createTransferTask(pVacuumBake, pBonder1, primaryType, secondaryType);
-					/*
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
-					*/
-				}
-
-				if (tempTask[1] != nullptr && pBonder1->hasG2Class()) {
-					m_pActiveRobotTask = tempTask[1];
-					if(tempTask[0] != nullptr) delete tempTask[0];
-				}
-				else if (tempTask[0] != nullptr && tempTask[1] != nullptr) {
-					m_pActiveRobotTask = tempTask[0];
-					delete tempTask[1];
-				}
-				if (m_pActiveRobotTask != nullptr) {
-					m_pActiveRobotTask->pick();
-					std::string strDescription = m_pActiveRobotTask->getDescription();
-					unlock();
-					if (m_listener.onRobotTaskEvent != nullptr) {
-						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-					}
-					LOGI("创建新任务<%s>...", strDescription.c_str());
-					continue;
-				}
-
-				if (tempTask[0] != nullptr) delete tempTask[0];
-				if (tempTask[1] != nullptr) delete tempTask[1];
-				tempTask[0] = nullptr;
-				tempTask[1] = nullptr;
-				if (!rmd.armState[1] && !pBonder2->hasBondClass()) {
-					tempTask[0] = createTransferTask(pFliper, pBonder2, primaryType, secondaryType, 2);
-					/*
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
-					*/
+					m_pActiveRobotTask = createTransferTask(pVacuumBake, pBonder1, primaryType, secondaryType);
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
 
 				if (!rmd.armState[0] && !pBonder2->hasBondClass()) {
-					tempTask[1] = createTransferTask(pVacuumBake, pBonder2, primaryType, secondaryType);
-					/*
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
-					*/
+					m_pActiveRobotTask = createTransferTask(pVacuumBake, pBonder2, primaryType, secondaryType);
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
 
-				if (tempTask[1] != nullptr && pBonder1->hasG2Class()) {
-					m_pActiveRobotTask = tempTask[1];
-					if (tempTask[0] != nullptr) delete tempTask[0];
-				}
-				else if (tempTask[0] != nullptr && tempTask[1] != nullptr) {
-					m_pActiveRobotTask = tempTask[0];
-					delete tempTask[1];
-				}
-				if (m_pActiveRobotTask != nullptr) {
-					m_pActiveRobotTask->pick();
-					std::string strDescription = m_pActiveRobotTask->getDescription();
-					unlock();
-					if (m_listener.onRobotTaskEvent != nullptr) {
-						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-					}
-					LOGI("创建新任务<%s>...", strDescription.c_str());
-					continue;
-				}
-				if (tempTask[0] != nullptr) delete tempTask[0];
-				if (tempTask[1] != nullptr) delete tempTask[1];
-				tempTask[0] = nullptr;
-				tempTask[1] = nullptr;
 
 				// Aligner -> Fliper(G2)
 				// Aligner -> VacuumBake(G1)
 				if (!rmd.armState[1]) {
 					m_pActiveRobotTask = createTransferTask(pAligner, pFliper, primaryType, secondaryType);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
 
 				if (!rmd.armState[0]) {
 					m_pActiveRobotTask = createTransferTask(pAligner, pVacuumBake, primaryType, secondaryType);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建新任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
+
 
 				// Aligner -> LoadPort
 				if (!rmd.armState[1]) {
 					m_pActiveRobotTask = createTransferTask_restore(pAligner, pLoadPorts);
-					if (m_pActiveRobotTask != nullptr) {
-						m_pActiveRobotTask->pick();
-						std::string strDescription = m_pActiveRobotTask->getDescription();
-						unlock();
-						if (m_listener.onRobotTaskEvent != nullptr) {
-							m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-						}
-						LOGI("创建Aligner回退任务<%s>...", strDescription.c_str());
-						continue;
-					}
+					CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
 				}
-
-
 
 
 				// LoadPort -> Aligner
@@ -833,19 +659,11 @@
 				}
 
 PORT_GET:
-				if (m_pActiveRobotTask != nullptr) {
-					m_pActiveRobotTask->pick();
-					std::string strDescription = m_pActiveRobotTask->getDescription();
-					unlock();
-					if (m_listener.onRobotTaskEvent != nullptr) {
-						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
-					}
-					LOGI("创建新任务<%s>...", strDescription.c_str());
-					continue;
-				}
+				CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
+
 
 				unlock();
-
+				continue;
 			}
 			unlock();
 		}

--
Gitblit v1.9.3