From 96579a48b3b558f5ce58cffe372b1f563a9e62ce Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 03 九月 2025 17:23:56 +0800
Subject: [PATCH] 1.配方列表和配方参数获取合并在线程中获取,并更新状态到对话框; 2.配方参数获取; 3.Bonder, AOI, 真空烘烤, 冷却烧烤配方参数解释。

---
 SourceCode/Bond/Servo/CRecipeList.cpp |   45 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/SourceCode/Bond/Servo/CRecipeList.cpp b/SourceCode/Bond/Servo/CRecipeList.cpp
index 62306a3..5f1fbd1 100644
--- a/SourceCode/Bond/Servo/CRecipeList.cpp
+++ b/SourceCode/Bond/Servo/CRecipeList.cpp
@@ -26,7 +26,7 @@
 		return m_nUnitNo;
 	}
 
-	int CRecipeList::addRecipePacket(int totalGroup, int currentGroup, const char* pszData, size_t size)
+	int CRecipeList::addRecipePacket(int totalCount, int totalGroup, int currentGroup, const char* pszData, size_t size)
 	{
 		if (m_nToatlGroupCount == 0) m_nToatlGroupCount = totalGroup;
 		if (m_nToatlGroupCount != totalGroup) {
@@ -47,7 +47,9 @@
 		for (int i = 0; i < size; i += 4) {
 			int index = CToolUnits::toInt16(&pszData[i]);
 			short id = CToolUnits::toInt16(&pszData[i + 2]);
-			addRecipe(index, id);
+			if (index != 0 && id != 0) {
+				addRecipe(index, id);
+			}
 		}
 
 		if (m_nCurrentGroupCount == m_nToatlGroupCount) {
@@ -67,7 +69,7 @@
 		}
 
 		m_ids[index] = id;
-		return 0;
+		return (int)m_ids.size();
 	}
 
 	std::map<int, short>& CRecipeList::getIds()
@@ -75,10 +77,47 @@
 		return m_ids;
 	}
 
+	std::unordered_map<short, std::vector<uint8_t>>& CRecipeList::getParamsRawData()
+	{
+		return m_paramsRawData;
+	}
+
 	void CRecipeList::reset()
 	{
 		m_nToatlGroupCount = 0;
 		m_nCurrentGroupCount = 0;
 		m_ids.clear();
+		m_paramsRawData.clear();
 	}
+
+	int CRecipeList::addParamsPacket(int totalCount, int totalGroup, int currentGroup,
+		short unitId, short recipeId,
+		const char* pszData, size_t size)
+	{
+		if (m_nToatlGroupCount == 0) m_nToatlGroupCount = totalGroup;
+		if (m_nToatlGroupCount != totalGroup) {
+			reset();
+			return MRLRC_GROUP_COUNT_NG;
+		}
+		if (currentGroup == 0) {
+			reset();
+		}
+		if (m_nCurrentGroupCount + 1 > currentGroup) {
+			return MRLRC_DUPLICATION_GROUP_COUNT_NG;
+		}
+		if (m_nCurrentGroupCount + 1 < currentGroup) {
+			return ORDER_BY_GROUP_COUNT_NG;
+		}
+		m_nCurrentGroupCount++;
+
+		m_paramsRawData[recipeId].insert(m_paramsRawData[recipeId].end(), (uint8_t*)(pszData), (uint8_t*)(pszData) + size);
+		if (m_nCurrentGroupCount == m_nToatlGroupCount) {
+			// 解释数据就交给应用层吧
+			return MRLRC_CURRENT_RECIPE_COMPLETE;
+		}
+
+
+		return MRLRC_CONTINUE;
+	}
+
 }

--
Gitblit v1.9.3