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 | 48 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/SourceCode/Bond/Servo/CRecipeList.cpp b/SourceCode/Bond/Servo/CRecipeList.cpp
index 4d8e7d0..5f1fbd1 100644
--- a/SourceCode/Bond/Servo/CRecipeList.cpp
+++ b/SourceCode/Bond/Servo/CRecipeList.cpp
@@ -26,12 +26,15 @@
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) {
reset();
return MRLRC_GROUP_COUNT_NG;
+ }
+ if (currentGroup == 0) {
+ reset();
}
if (m_nCurrentGroupCount + 1 > currentGroup) {
return MRLRC_DUPLICATION_GROUP_COUNT_NG;
@@ -44,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) {
@@ -64,7 +69,7 @@
}
m_ids[index] = id;
- return 0;
+ return (int)m_ids.size();
}
std::map<int, short>& CRecipeList::getIds()
@@ -72,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