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/PageRecipe.cpp |  125 ++++++++++++++++++++++++++++++++---------
 1 files changed, 98 insertions(+), 27 deletions(-)

diff --git a/SourceCode/Bond/Servo/PageRecipe.cpp b/SourceCode/Bond/Servo/PageRecipe.cpp
index 9d9d83c..3cadbe0 100644
--- a/SourceCode/Bond/Servo/PageRecipe.cpp
+++ b/SourceCode/Bond/Servo/PageRecipe.cpp
@@ -5,8 +5,8 @@
 #include "Servo.h"
 #include "afxdialogex.h"
 #include "PageRecipe.h"
-#include "MsgDlg.h"
 #include "RecipeDeviceBindDlg.h"
+
 
 // CPageRecipe 瀵硅瘽妗�
 
@@ -486,32 +486,11 @@
 		FillDataToListCtrl(vecData);
 	}
 	else {
-		// enable port
-		CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鑾峰彇閰嶆柟...");
-		pEq->masterRecipeListRequest(0, [&, pEq](int status) -> void {
-			if (status == SS_FAILED || status == SS_TIMEOUT) {
-				CString strMsg;
-				strMsg.Format(status == SS_FAILED ? _T("鑾峰彇閰嶆柟澶辫触锛�") : _T("鑾峰彇閰嶆柟瓒呮椂锛�"));
-				msgDlg.DelayClose(3000);
-				msgDlg.SetIcon(MSG_BOX_ERROR);
-				msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
-				msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
-				msgDlg.SetMarquee(FALSE, 0);
-				msgDlg.SetCompleteCode(-1);
-			}
-			else if (status == SS_COMPLETE) {
-				CString strMsg;
-				strMsg.Format(_T("鑾峰彇閰嶆柟瀹屾垚锛�"));
-				msgDlg.DelayClose(3000);
-				msgDlg.SetIcon(MSG_BOX_SUCCEED);
-				msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
-				msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
-				msgDlg.SetMarquee(FALSE, 0);
-				msgDlg.SetCompleteCode(0);
-				SERVO::CRecipeList* pRecipeList = pEq->getRecipeList(0);
-				FillRecipeListToListCtrl(pRecipeList);
-			}
-		});
+		// 鑾峰彇閰嶆柟鍒楄〃
+		CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鑾峰彇閰嶆柟鍒楄〃...");
+		msgDlg.SetData((DWORD_PTR)this);
+		msgDlg.SetDataEx((DWORD_PTR)pEq);
+		msgDlg.BeginThread(SyncThreadFunction);
 		msgDlg.DoModal();
 	}
 }
@@ -556,3 +535,95 @@
 		FillRecipeListToListCtrl(pRecipeList);
 	}
 }
+
+UINT CPageRecipe::SyncThreadFunction(LPVOID lpvData)
+{
+	CMsgDlg* pMsgDlg = (CMsgDlg*)lpvData;
+	CPageRecipe* pPageRecipe = (CPageRecipe*)pMsgDlg->GetData();
+	return pPageRecipe->SyncThreadFunctionInner(pMsgDlg);
+}
+
+UINT CPageRecipe::SyncThreadFunctionInner(CMsgDlg* pMsgDlg)
+{
+	SERVO::CEquipment* pEq = (SERVO::CEquipment*)pMsgDlg->GetDataEx();
+	HANDLE hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
+	int nStep = 0;
+	pEq->masterRecipeListRequest(0, [&, pEq, pMsgDlg, hEvent](int status) -> void {
+		Sleep(300);
+		if (status == SS_FAILED || status == SS_TIMEOUT) {
+			CString strMsg;
+			strMsg.Format(status == SS_FAILED ? _T("鑾峰彇閰嶆柟鍒楄〃澶辫触锛�") : _T("鑾峰彇閰嶆柟鍒楄〃瓒呮椂锛�"));
+			pMsgDlg->SetIcon(MSG_BOX_ERROR);
+			pMsgDlg->SetTitle(_T("鎿嶄綔澶辫触"));
+			pMsgDlg->SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			SetEvent(hEvent);
+		}
+		else if (status == SS_LIST_COMPLETE) {
+			CString strMsg;
+			strMsg.Format(_T("鑾峰彇閰嶆柟鍒楄〃瀹屾垚锛�"));
+			pMsgDlg->SetTitle(_T("鎿嶄綔鎴愬姛"));
+			pMsgDlg->SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			SERVO::CRecipeList* pRecipeList = pEq->getRecipeList(0);
+			if (pRecipeList != nullptr && !pRecipeList->getIds().empty()) {
+				nStep = 1;
+			}
+			SetEvent(hEvent);
+		}
+	});
+	::WaitForSingleObject(hEvent, INFINITE);
+	if (nStep != 1) {
+		pMsgDlg->SetIcon(MSG_BOX_SUCCEED);
+		pMsgDlg->SetMarquee(FALSE, 0);
+		pMsgDlg->SetCompleteCode(-1);
+		pMsgDlg->DelayClose(3000);
+	}
+	ResetEvent(hEvent);
+
+
+	// 鍙傛暟鍒楄〃
+	if (nStep == 1) {
+		SERVO::CRecipeList* pRecipeList = pEq->getRecipeList(0);
+		ASSERT(pRecipeList);
+		auto& ids = pRecipeList->getIds();
+		pMsgDlg->SetTitle(_T("姝e湪鑾峰彇鍙傛暟"));
+		for (auto item : ids) {
+			CString strMsg;
+			strMsg.Format(_T("姝e湪鑾峰彇閰嶆柟 %d 鍙傛暟..."), item.second);
+			pMsgDlg->SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			pEq->recipeParameterRequest(0, item.second, 0, [&, pEq, pMsgDlg](int status) -> void {
+				Sleep(500);
+				if (status == SS_FAILED || status == SS_TIMEOUT) {
+					CString strMsg;
+					strMsg.Format(status == SS_FAILED ? _T("鑾峰彇閰嶆柟 %d 鍙傛暟澶辫触锛�") : _T("鑾峰彇閰嶆柟 %d 鍙傛暟瓒呮椂锛�"), item.second);
+					pMsgDlg->SetMessage((LPTSTR)(LPCTSTR)strMsg);
+
+					Sleep(300);
+					SetEvent(hEvent);
+				}
+				else if (status == SS_PARAMS_COMPLETE) {
+					CString strMsg;
+					strMsg.Format(_T("鑾峰彇閰嶆柟 %d 鍙傛暟瀹屾垚锛�"), item.second);
+					pMsgDlg->SetMessage((LPTSTR)(LPCTSTR)strMsg);
+
+					Sleep(300);
+					SetEvent(hEvent);
+				}
+				});
+			::WaitForSingleObject(hEvent, INFINITE);
+			ResetEvent(hEvent);
+		}
+		
+		pMsgDlg->SetIcon(MSG_BOX_SUCCEED);
+		pMsgDlg->SetTitle(_T("鎿嶄綔瀹屾垚"));
+		pMsgDlg->SetCompleteCode(0);
+		pMsgDlg->SetMarquee(FALSE, 0);
+		pMsgDlg->DelayClose(3000);
+	};
+
+	SERVO::CRecipeList* pRecipeList = pEq->getRecipeList(0);
+	FillRecipeListToListCtrl(pRecipeList);
+	CloseHandle(hEvent);
+
+
+	return 0;
+}

--
Gitblit v1.9.3