From faca2eaec1428f979ca99ce07d7cfe547db96c38 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 06 六月 2025 11:20:34 +0800
Subject: [PATCH] 1.BakeCooling ->Measurement搬送逻辑;

---
 SourceCode/Bond/Servo/CMeasurement.cpp                          |    4 ++++
 SourceCode/Bond/Servo/CMaster.cpp                               |   38 +++++++++++++++++++++++++++++++++++---
 SourceCode/Bond/Servo/CMaster.h                                 |    1 +
 Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.7(1).xlsx |    0 
 4 files changed, 40 insertions(+), 3 deletions(-)

diff --git "a/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.7\0501\051.xlsx" "b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.7\0501\051.xlsx"
new file mode 100644
index 0000000..15ab4ed
--- /dev/null
+++ "b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.7\0501\051.xlsx"
Binary files differ
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index a73e03c..bc2a884 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -295,6 +295,7 @@
 		CBonder* pBonder1 = (CBonder*)getEquipment(EQ_ID_Bonder1);
 		CBonder* pBonder2 = (CBonder*)getEquipment(EQ_ID_Bonder2);
 		CBakeCooling* pBakeCooling = (CBakeCooling*)getEquipment(EQ_ID_BAKE_COOLING);
+		CMeasurement* pMeasurement = (CMeasurement*)getEquipment(EQ_ID_MEASUREMENT);
 
 		ASSERT(pLoadPort1);
 		ASSERT(pLoadPort2);
@@ -304,6 +305,7 @@
 		ASSERT(pBonder1);
 		ASSERT(pBonder2);
 		ASSERT(pBakeCooling);
+		ASSERT(pMeasurement);
 
 		while (1) {
 			// 待退出信号或时间到
@@ -367,7 +369,19 @@
 				}
 
 
+				// BakeCooling ->Measurement
+				m_pActiveRobotTask = createTransferTask_bakecooling_to_measurement(pBakeCooling, pMeasurement);
+				if (m_pActiveRobotTask != nullptr) {
+					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;
+				}
 
+				
 				// BakeCooling内部
 				// Bake -> Cooling
 				m_pActiveRobotTask = createTransferTask_bake_to_cooling(pBakeCooling);
@@ -508,9 +522,6 @@
 					LOGI("创建新任务<%s>...", strDescription.c_str());
 					continue;
 				}
-
-
-				// BakeCooling ->Measurement
 
 
 				// Measurement -> LoadPort
@@ -1168,4 +1179,25 @@
 
 		return pTask;
 	}
+
+	CRobotTask* CMaster::createTransferTask_bakecooling_to_measurement(CEquipment* pSrcEq, CEquipment* pTarEq)
+	{
+		std::vector<int> slots = { 3, 4 };
+
+		CRobotTask* pTask = nullptr;
+		CSlot* pSrcSlot, * pTarSlot;
+		pTarSlot = pTarEq->getAvailableSlotForGlass(MaterialsType::G1);
+		pSrcSlot = pSrcEq->getProcessedSlot2(MaterialsType::G1, slots);
+
+		if (pSrcSlot != nullptr && nullptr != pTarSlot) {
+			pTask = new CRobotTask();
+			pTask->setContext(pSrcSlot->getContext());
+			pTask->setRobotTransferParam(++taskSeqNo, 1, pSrcSlot->getPosition(),
+				pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
+		}
+
+
+		return pTask;
+	}
+
 }
diff --git a/SourceCode/Bond/Servo/CMaster.h b/SourceCode/Bond/Servo/CMaster.h
index 2be2371..9d00447 100644
--- a/SourceCode/Bond/Servo/CMaster.h
+++ b/SourceCode/Bond/Servo/CMaster.h
@@ -88,6 +88,7 @@
             MaterialsType primaryType = MaterialsType::G1, MaterialsType secondaryType = MaterialsType::G2);
         CRobotTask* createTransferTask_bonder_to_bakecooling(CEquipment* pSrcEq, CEquipment* pTarEq);
         CRobotTask* createTransferTask_bake_to_cooling(CEquipment* pSrcEq);
+        CRobotTask* createTransferTask_bakecooling_to_measurement(CEquipment* pSrcEq, CEquipment* pTarEq);
 
     private:
         CRITICAL_SECTION m_criticalSection;
diff --git a/SourceCode/Bond/Servo/CMeasurement.cpp b/SourceCode/Bond/Servo/CMeasurement.cpp
index 4821891..3531b18 100644
--- a/SourceCode/Bond/Servo/CMeasurement.cpp
+++ b/SourceCode/Bond/Servo/CMeasurement.cpp
@@ -45,6 +45,10 @@
 		m_slot[0].setPosition(m_nID);
 		m_slot[0].setNo(1);
 		m_slot[0].setName("Slot 1");
+		m_slot[1].enable();
+		m_slot[1].setPosition(m_nID);
+		m_slot[1].setNo(2);
+		m_slot[1].setName("Slot 2");
 	}
 
 	void CMeasurement::onTimer(UINT nTimerid)

--
Gitblit v1.9.3