From 5b6e648814aa829706cb94e6c44766ee9a6d9f12 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 28 五月 2025 11:06:47 +0800
Subject: [PATCH] 1.机器槽位信息设计(CSlot)

---
 SourceCode/Bond/Servo/CEquipment.cpp |   98 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 73 insertions(+), 25 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index ad9ab25..d8cad41 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -493,30 +493,30 @@
 
 
 		// CEqCassetteTranserStateStep
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_EMPTY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_LOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_LOADED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_INUSE, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_UNLOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_BLOCKED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_EMPTY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_LOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_LOADED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_INUSE, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_UNLOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_BLOCKED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_EMPTY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_LOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_LOADED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_INUSE, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_UNLOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_BLOCKED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_EMPTY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_LOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_LOADED, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_INUSE, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_UNLOAD_READY, pszData, size);
-		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_BLOCKED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_EMPTY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_LOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_LOADED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_INUSE, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_UNLOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_BLOCKED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_EMPTY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_LOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_LOADED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_INUSE, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_UNLOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_BLOCKED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_EMPTY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_LOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_LOADED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_INUSE, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_UNLOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_BLOCKED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_EMPTY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_LOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_LOADED, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_INUSE, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_UNLOAD_READY, pszData, size);
+		CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_BLOCKED, pszData, size);
 	}
 
 	BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index)
@@ -1099,7 +1099,7 @@
 			return -1;
 		}
 
-		unsigned short operationMode = (unsigned short)(mode + getIndexerOperationModeBaseValue());
+		unsigned short operationMode = (unsigned short)((unsigned short)mode + getIndexerOperationModeBaseValue());
 		LOGI("<CEquipment-%s>准备设置indexerOperationMode<%d>", m_strName.c_str(), (int)mode);
 		if (onWritedBlock != nullptr) {
 			pStep->writeShort(operationMode, onWritedBlock);
@@ -1170,6 +1170,54 @@
 		return 0;
 	}
 
+	CSlot* CEquipment::getAvailableSlot()
+	{
+		for (int i = 0; i < SLOT_MAX; i++) {
+			if (!m_slot[i].isEnable()) continue;
+			if (m_slot[i].isLock()) continue;
+			if (!m_slot[i].isEmpty()) continue;
+
+			return &m_slot[i];
+		}
+
+		return nullptr;
+	}
+
+	CSlot* CEquipment::getEmptySlot(MaterialsType type)
+	{
+		for (int i = 0; i < SLOT_MAX; i++) {
+			if (!m_slot[i].isEnable()) continue;
+			if (m_slot[i].isLock()) continue;
+			if (!m_slot[i].isEmpty()) continue;
+
+			MaterialsType slotType = m_slot[i].getType();
+			if (type == MaterialsType::G1 && slotType == MaterialsType::G2) continue;
+			if (type == MaterialsType::G2 && slotType == MaterialsType::G1) continue;
+
+			return &m_slot[i];
+		}
+
+		return nullptr;
+	}
+
+	CSlot* CEquipment::getNonEmptySlot(MaterialsType putSlotType)
+	{
+		for (int i = 0; i < SLOT_MAX; i++) {
+			if (!m_slot[i].isEnable()) continue;
+			if (m_slot[i].isLock()) continue;
+			CGlass* pGlass = (CGlass*)m_slot[i].getContext();
+			if (pGlass == nullptr) continue;
+
+			MaterialsType glassType = pGlass->getType();
+			if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue;
+			if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue;
+
+			return &m_slot[i];
+		}
+
+		return nullptr;
+	}
+
 	short CEquipment::decodeRecipeListReport(const char* pszData, size_t size)
 	{
 		return m_recipesManager.decodeRecipeListReport(pszData, size);

--
Gitblit v1.9.3