From 5a8bbd2426aeacdbbb2fdb1a7f7a1adce0cac7f9 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 01 八月 2025 16:23:29 +0800
Subject: [PATCH] 1. 新增以下功能函数并集成:    - InitStorage():初始化存储区域    - StartStorage():开始数据存储    - StopStorage():停止存储并自动提取、分析数据    - AnalyzeStoredData():分析指定端口数据,返回偏移量

---
 SourceCode/Bond/Servo/CMaster.cpp |   23 ++++++++++-------------
 1 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 615a7fd..6bcda0c 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -548,15 +548,11 @@
 					LOGI("Arm1 %s, Arm2 %s.", rmd.armState[0] ? _T("不可用") : _T("可用"),
 						rmd.armState[1] ? _T("不可用") : _T("可用"));
 				}
-				CEquipment* pEqTar[] = { pVacuumBake, pFliper };
-				if (primaryType == MaterialsType::G2) {
-					pEqTar[0] = pFliper;
-					pEqTar[1] = pVacuumBake;
-				}
 				for (int s = 0; s < 4; s++) {
+					PortType pt = pLoadPorts[s]->getPortType();
 					if (!rmd.armState[0] && pLoadPorts[s]->isEnable()
-						&& pLoadPorts[s]->getPortType() == PortType::Unloading
-						&& pLoadPorts[s]->getPortMode() == PortMode::ReadyToUnload) {
+						&& (pt == PortType::Unloading || pt == PortType::Both)
+						&& pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
 						m_pActiveRobotTask = createTransferTask(pMeasurement, pLoadPorts[s], primaryType, secondaryType);
 						if (m_pActiveRobotTask != nullptr) {
 							goto PORT_PUT;
@@ -649,9 +645,10 @@
 
 				// LoadPort -> Aligner
 				for (int s = 0; s < 4; s++) {
+					PortType pt = pLoadPorts[s]->getPortType();
 					if (!rmd.armState[0] && pLoadPorts[s]->isEnable()
-						&& pLoadPorts[s]->getPortType() == PortType::Loading
-						&& pLoadPorts[s]->getPortMode() == PortMode::ReadyToLoad) {
+						&& (pt == PortType::Loading || pt == PortType::Both)
+						&& pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
 						m_pActiveRobotTask = createTransferTask(pLoadPorts[s], pAligner, primaryType, secondaryType);
 						if (m_pActiveRobotTask != nullptr) {
 							pEFEM->setContext(m_pActiveRobotTask->getContext());
@@ -891,10 +888,10 @@
 			LOGE("<Master-%s>Port InUse, map(%d!=%d)不一致,请检查。",
 				((CEquipment*)pEquipment)->getName().c_str(), scanMap, downMap);
 		};
-		listener.onPortInUse = [&](void* pEquipment, short scanMap) {
-			LOGE("<Master-%s>Port InUse。scanMap=%d", ((CEquipment*)pEquipment)->getName().c_str(), scanMap);
-			if (m_listener.onLoadPortInUse != nullptr) {
-				m_listener.onLoadPortInUse(this, (CEquipment*)pEquipment, scanMap);
+		listener.onPortStatusChanged = [&](void* pEquipment, short status, __int64 data) {
+			LOGE("<Master-%s>Port InUse。status=%d, data=%lld", ((CEquipment*)pEquipment)->getName().c_str(), status);
+			if (m_listener.onLoadPortStatusChanged != nullptr) {
+				m_listener.onLoadPortStatusChanged(this, (CEquipment*)pEquipment, status, data);
 			}
 		};
 		pEquipment->setListener(listener);

--
Gitblit v1.9.3