From ebf96874b6a994e3b09b69f272416cb482cf25bb Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 30 五月 2025 18:49:43 +0800
Subject: [PATCH] 1.Fliper(G2) -> Aligner    VacuumBake(G1) -> Aligner搬送逻辑和模拟测试; 2.在状态栏增加当前搬送状态显示(按钮,下一步用于实现点击按钮展开搬送任务详情,中断操作等)

---
 SourceCode/Bond/Servo/CMaster.cpp |   75 +++++++++++++++++++++++++++++--------
 1 files changed, 58 insertions(+), 17 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index d536f7c..7a30bfa 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -279,6 +279,19 @@
 
 	unsigned CMaster::DispatchProc()
 	{
+		// 各种机器
+		CLoadPort* pLoadPort1 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT1);
+		CLoadPort* pLoadPort2 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT2);
+		CFliper* pFliper = (CFliper*)getEquipment(EQ_ID_FLIPER);
+		CVacuumBake* pVacuumBack = (CVacuumBake*)getEquipment(EQ_ID_VACUUMBAKE);
+		CAligner* pAligner = (CAligner*)getEquipment(EQ_ID_ALIGNER);
+
+		ASSERT(pLoadPort1);
+		ASSERT(pLoadPort2);
+		ASSERT(pFliper);
+		ASSERT(pVacuumBack);
+		ASSERT(pAligner);
+
 		while (1) {
 			// 待退出信号或时间到
 			HANDLE hEvents[] = { m_hEventDispatchThreadExit[0], m_hDispatchEvent };
@@ -310,30 +323,24 @@
 			// 调度逻辑处理
 			else if (m_state == MASTERSTATE::RUNNING) {
 				unlock();
-				LOGI("调度处理中...");
+				// LOGI("调度处理中...");
 
 				lock();
 				if (m_pActiveRobotTask != nullptr) {
 					unlock();
 					// 检测到当前有正在下午的任务,确保当前任务完成或中止后继续
-					LOGI("检测到当前有正在下午的任务,确保当前任务完成或中止后继续...");
+					// LOGI("检测到当前有正在下午的任务,确保当前任务完成或中止后继续...");
 					continue;
 				}
 
 				// LoadPort -> Fliper(G2)
-				CLoadPort* pLoadPort1 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT1);
-				CLoadPort* pLoadPort2 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT2);
-				CFliper* pFliper = (CFliper*)getEquipment(EQ_ID_FLIPER);
-				CVacuumBake* pVacuumBack = (CVacuumBake*)getEquipment(EQ_ID_VACUUMBAKE);
-				ASSERT(pLoadPort1);
-				ASSERT(pLoadPort2);
-				ASSERT(pFliper);
-				ASSERT(pVacuumBack);
-
 				m_pActiveRobotTask = createTransferTask(pLoadPort1, pFliper);
 				if (m_pActiveRobotTask != nullptr) {
 					std::string strDescription = m_pActiveRobotTask->getDescription();
 					unlock();
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
 					LOGI("创建新任务<%s>...", strDescription.c_str());
 					continue;
 				}
@@ -342,6 +349,9 @@
 				if (m_pActiveRobotTask != nullptr) {
 					std::string strDescription = m_pActiveRobotTask->getDescription();
 					unlock();
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
 					LOGI("创建新任务<%s>...", strDescription.c_str());
 					continue;
 				}
@@ -353,7 +363,10 @@
 				if (m_pActiveRobotTask != nullptr) {
 					std::string strDescription = m_pActiveRobotTask->getDescription();
 					unlock();
-					LOGI("创建新任务1<%s>...", strDescription.c_str());
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
+					LOGI("创建新任务<%s>...", strDescription.c_str());
 					continue;
 				}
 
@@ -361,16 +374,40 @@
 				if (m_pActiveRobotTask != nullptr) {
 					std::string strDescription = m_pActiveRobotTask->getDescription();
 					unlock();
-					LOGI("创建新任务2<%s>...", strDescription.c_str());
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
+					LOGI("创建新任务<%s>...", strDescription.c_str());
+					continue;
+				}
+
+
+				// Fliper(G2) -> Aligner
+				// VacuumBake(G1) -> Aligner
+				m_pActiveRobotTask = createTransferTask(pFliper, pAligner);
+				if (m_pActiveRobotTask != nullptr) {
+					std::string strDescription = m_pActiveRobotTask->getDescription();
+					unlock();
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
+					LOGI("创建新任务<%s>...", strDescription.c_str());
+					continue;
+				}
+
+				m_pActiveRobotTask = createTransferTask(pVacuumBack, pAligner);
+				if (m_pActiveRobotTask != nullptr) {
+					std::string strDescription = m_pActiveRobotTask->getDescription();
+					unlock();
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
+					LOGI("创建新任务<%s>...", strDescription.c_str());
 					continue;
 				}
 
 
 
-				// Fliper(G2) -> Aligner
-
-
-				// VacuumBake(G1) -> Aligner
 
 
 				// Aligner -> Bonder
@@ -554,6 +591,10 @@
 					lock();
 					delete m_pActiveRobotTask;
 					m_pActiveRobotTask = nullptr;
+
+					if (m_listener.onRobotTaskEvent != nullptr) {
+						m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+					}
 				}
 				unlock();
 			}

--
Gitblit v1.9.3