From 697fa6b857fe202fe2e5f50d4ecf2c7268e527cc Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 15 八月 2025 15:22:19 +0800
Subject: [PATCH] 1.变量(代EAP查询的数据)增加列表类型; 2.实现ProcessJob Queued上报功能;

---
 SourceCode/Bond/Servo/CMaster.cpp |   81 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 4cef8ea..ccd1f5d 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -3,6 +3,7 @@
 #include "CMaster.h"
 #include <future>
 #include <vector>
+#include "RecipeManager.h"
 
 
 namespace SERVO {
@@ -62,6 +63,11 @@
 
 	CMaster::~CMaster()
 	{
+		for (auto item : m_processJobs) {
+			delete item;
+		}
+		m_processJobs.clear();
+
 		if (m_hEventReadBitsThreadExit[0] != nullptr) {
 			::CloseHandle(m_hEventReadBitsThreadExit[0]);
 			m_hEventReadBitsThreadExit[0] = nullptr;
@@ -825,7 +831,7 @@
 				if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_Aligner_Fliper)
 					&&!rmd.armState[0] && !pBonder1->hasBondClass()) {
 					m_pActiveRobotTask = createTransferTask_continuous_transfer(pFliper,
-						0, pBonder1, 1, 2);
+						0, pBonder1, 1);
 					if (m_pActiveRobotTask != nullptr) {
 						m_nContinuousTransferStep = CTStep_Fliper_Bonder1;
 						LOGI("<ContinuousTransfer>千传测试,开始搬送任务(Fliper(G2) -> Bonder1)...");
@@ -1146,6 +1152,15 @@
 	}
 
 	CEquipment* CMaster::getEquipment(int id)
+	{
+		for (auto item : m_listEquipment) {
+			if (item->getID() == id) return item;
+		}
+
+		return nullptr;
+	}
+
+	CEquipment* CMaster::getEquipment(int id) const
 	{
 		for (auto item : m_listEquipment) {
 			if (item->getID() == id) return item;
@@ -1831,4 +1846,68 @@
 	{
 		m_nContinuousTransferCount = round;
 	}
+
+	int CMaster::setProcessJobs(std::vector<SERVO::CProcessJob*>& pjs)
+	{
+		std::vector<SERVO::CProcessJob*> temp;
+		for (auto p : pjs) {
+			if (p->validate(*this)) {
+				temp.push_back(p);
+			}
+		}
+
+		m_processJobs = temp;
+		return m_processJobs.size();
+	}
+
+	std::vector<SERVO::CProcessJob*>& CMaster::getProcessJobs()
+	{
+		return m_processJobs;
+	}
+
+	CLoadPort* CMaster::getPortWithCarrierId(const std::string& carrierId) const
+	{
+		CLoadPort* pPort;
+		int eqid[] = { EQ_ID_LOADPORT1, EQ_ID_LOADPORT2, EQ_ID_LOADPORT3, EQ_ID_LOADPORT4};
+		for (int i = 0; i < 4; i++) {
+			pPort = (CLoadPort*)getEquipment(eqid[i]);
+			ASSERT(pPort);
+			if (pPort->getCassetteId().compare(carrierId) == 0) return pPort;
+		}
+
+		return nullptr;
+	}
+
+	bool CMaster::isProcessJobsEmpty() const
+	{
+		return m_processJobs.empty();
+	}
+
+	bool CMaster::recipeExists(const std::string& ppid) const
+	{
+		std::vector<std::string> vecRecipe = RecipeManager::getInstance().getAllPPID();
+		bool exists = std::find(vecRecipe.begin(), vecRecipe.end(), ppid) != vecRecipe.end();
+		return exists;
+	}
+
+	bool CMaster::carrierPresent(const std::string& carrierId) const
+	{
+		CLoadPort* pPort = getPortWithCarrierId(carrierId);
+		return pPort != nullptr;
+	}
+
+	bool CMaster::slotUsable(const std::string& carrierId, uint16_t slot) const
+	{
+		CLoadPort* pPort = getPortWithCarrierId(carrierId);
+		if(pPort == nullptr) return false;
+		CSlot* pSlot = pPort->getSlot(slot);
+		if (pSlot == nullptr) return false;
+		return pSlot->isEnable();
+	}
+
+	bool CMaster::ceidDefined(uint32_t ceid) const
+	{
+		return true;
+	}
+
 }

--
Gitblit v1.9.3