From ee4945bb0e32a065ce1d5d23ec6afbcba4bbcc03 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 09 九月 2025 09:33:49 +0800
Subject: [PATCH] 1.VCR转移到Aligner

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

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index f88f104..425ac92 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -767,6 +767,13 @@
 						&& pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
 						m_pActiveRobotTask = createTransferTask(pLoadPorts[s], pAligner, primaryType, secondaryType, 1, m_bJobMode);
 						if (m_pActiveRobotTask != nullptr) {
+							CGlass* pGlass = (CGlass*)m_pActiveRobotTask->getContext();
+							if (pGlass->getBuddy() != nullptr) {
+								delete m_pActiveRobotTask;
+								m_pActiveRobotTask = nullptr;
+								continue;
+							}
+
 							pEFEM->setContext(m_pActiveRobotTask->getContext());
 							goto PORT_GET;
 						}
@@ -987,6 +994,12 @@
 						m_pActiveRobotTask = createTransferTask(pLoadPorts[s], pAligner, primaryType, secondaryType, m_bJobMode);
 						if (m_pActiveRobotTask != nullptr) {
 							CGlass* pGlass = (CGlass*)m_pActiveRobotTask->getContext();
+							if (pGlass->getBuddy() != nullptr) {
+								delete m_pActiveRobotTask;
+								m_pActiveRobotTask = nullptr;
+								continue;
+							}
+
 							pEFEM->setContext(pGlass);
 							pGlass->start();
 							bool bMoved = glassFromQueueToInPorcess(pGlass);
@@ -1538,6 +1551,26 @@
 			if (m_listener.onLoadPortStatusChanged != nullptr) {
 				m_listener.onLoadPortStatusChanged(this, (CEquipment*)pEquipment, status, data);
 			}
+		};
+		listener.onSVDataReport = [&](void* pEquipment, void* pData) {
+			CSVData* pSVData = (CSVData*)pData;
+			auto rawData = pSVData->getSVRawData();
+			std::vector<CParam> params;
+			((CEquipment*)pEquipment)->parsingSVData((const char*)rawData.data(), rawData.size(), params);
+		
+			std::string strOut;
+			char szBuffer[256];
+			for (auto p : params) {
+				if (!strOut.empty()) strOut.append(",");
+				if (p.getValueType() == PVT_INT) {
+					sprintf_s(szBuffer, 256, "%s:%d", p.getName().c_str(), p.getIntValue());
+				}
+				else if (p.getValueType() == PVT_DOUBLE) {
+					sprintf_s(szBuffer, 256, "%s:%f", p.getName().c_str(), p.getDoubleValue());
+				}
+				strOut.append(szBuffer);
+			}
+			LOGI("<CMaster-%s>SVDataReport:%s", ((CEquipment*)pEquipment)->getName().c_str(), strOut.c_str());
 		};
 		pEquipment->setListener(listener);
 		pEquipment->setCcLink(&m_cclink);
@@ -2493,7 +2526,9 @@
 			m_pControlJob = new CControlJob();
 			if (!CControlJob::deserialize(ifs, *m_pControlJob)) return false;
 		}
-
+		else {
+			return false;
+		}
 
 		// 读取 ProcessJob 列表
 		uint32_t count = 0;

--
Gitblit v1.9.3