From 4e3e35378d8c677397ece01378582b89869b572a Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 09 七月 2025 17:25:00 +0800
Subject: [PATCH] 创建 IV2M_LoadImageFromFolder 函数,提取重复代码,新增产品ID自动提取

---
 /dev/null                    |    0 
 ENRIT/View/ViewScanImage.cpp |   17 ++++-
 ENRIT/MainFrm.cpp            |  113 +++++++++++++++++++++++++++++++++++++
 ENRIT/Define/Global_Define.h |    1 
 ENRIT/MainFrm.h              |    3 +
 5 files changed, 128 insertions(+), 6 deletions(-)

diff --git a/.vs/ENRIT/CopilotIndices/17.13.441.19478/CodeChunks.db b/.vs/ENRIT/CopilotIndices/17.13.441.19478/CodeChunks.db
deleted file mode 100644
index aa2ece2..0000000
--- a/.vs/ENRIT/CopilotIndices/17.13.441.19478/CodeChunks.db
+++ /dev/null
Binary files differ
diff --git a/.vs/ENRIT/CopilotIndices/17.13.441.19478/SemanticSymbols.db b/.vs/ENRIT/CopilotIndices/17.13.441.19478/SemanticSymbols.db
deleted file mode 100644
index 4955d15..0000000
--- a/.vs/ENRIT/CopilotIndices/17.13.441.19478/SemanticSymbols.db
+++ /dev/null
Binary files differ
diff --git a/.vs/ENRIT/FileContentIndex/2a67161d-eeaf-477b-9b1f-845d8fa24339.vsidx b/.vs/ENRIT/FileContentIndex/2a67161d-eeaf-477b-9b1f-845d8fa24339.vsidx
deleted file mode 100644
index f15a116..0000000
--- a/.vs/ENRIT/FileContentIndex/2a67161d-eeaf-477b-9b1f-845d8fa24339.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/ENRIT/v17/Browse.VC.db b/.vs/ENRIT/v17/Browse.VC.db
deleted file mode 100644
index 8e7081b..0000000
--- a/.vs/ENRIT/v17/Browse.VC.db
+++ /dev/null
Binary files differ
diff --git a/.vs/ENRIT/v17/DocumentLayout.backup.json b/.vs/ENRIT/v17/DocumentLayout.backup.json
deleted file mode 100644
index f2e523f..0000000
--- a/.vs/ENRIT/v17/DocumentLayout.backup.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
-  "Version": 1,
-  "WorkspaceRootPath": "D:\\WorkCode\\ENRIT\\",
-  "Documents": [
-    {
-      "AbsoluteMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|D:\\WorkCode\\ENRIT\\BlVisionPro\\BlVisionPro.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
-      "RelativeMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|solutionrelative:BlVisionPro\\BlVisionPro.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|D:\\WorkCode\\ENRIT\\BlVisionPro\\IncludeVision.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
-      "RelativeMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|solutionrelative:BlVisionPro\\IncludeVision.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
-    }
-  ],
-  "DocumentGroupContainers": [
-    {
-      "Orientation": 0,
-      "VerticalTabListWidth": 256,
-      "DocumentGroups": [
-        {
-          "DockedWidth": 200,
-          "SelectedChildIndex": 2,
-          "Children": [
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "BlVisionPro.h",
-              "DocumentMoniker": "D:\\WorkCode\\ENRIT\\BlVisionPro\\BlVisionPro.h",
-              "RelativeDocumentMoniker": "BlVisionPro\\BlVisionPro.h",
-              "ToolTip": "D:\\WorkCode\\ENRIT\\BlVisionPro\\BlVisionPro.h",
-              "RelativeToolTip": "BlVisionPro\\BlVisionPro.h",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAiwAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
-              "WhenOpened": "2025-06-04T08:27:51.477Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "IncludeVision.h",
-              "DocumentMoniker": "D:\\WorkCode\\ENRIT\\BlVisionPro\\IncludeVision.h",
-              "RelativeDocumentMoniker": "BlVisionPro\\IncludeVision.h",
-              "ToolTip": "D:\\WorkCode\\ENRIT\\BlVisionPro\\IncludeVision.h",
-              "RelativeToolTip": "BlVisionPro\\IncludeVision.h",
-              "ViewState": "AgIAAGwAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
-              "WhenOpened": "2025-06-04T08:26:26.236Z",
-              "EditorCaption": ""
-            }
-          ]
-        },
-        {
-          "DockedWidth": 200,
-          "SelectedChildIndex": -1,
-          "Children": [
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{28836128-fc2c-11d2-a433-00c04f72d18a}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{68487888-204a-11d3-87eb-00c04f7971a5}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{004be353-6879-467c-9d1e-9ac23cdf6d49}"
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/.vs/ENRIT/v17/DocumentLayout.json b/.vs/ENRIT/v17/DocumentLayout.json
deleted file mode 100644
index 36d5c53..0000000
--- a/.vs/ENRIT/v17/DocumentLayout.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "Version": 1,
-  "WorkspaceRootPath": "D:\\WorkCode\\ENRIT\\",
-  "Documents": [
-    {
-      "AbsoluteMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|D:\\WorkCode\\ENRIT\\BlVisionPro\\BlVisionPro.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
-      "RelativeMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|solutionrelative:BlVisionPro\\BlVisionPro.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|D:\\WorkCode\\ENRIT\\BlVisionPro\\IncludeVision.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
-      "RelativeMoniker": "D:0:0:{36F8EDF1-9D70-4496-B465-AFA0FAB6F7EB}|BlVisionPro\\BlVisionPro.vcxproj|solutionrelative:BlVisionPro\\IncludeVision.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
-    }
-  ],
-  "DocumentGroupContainers": [
-    {
-      "Orientation": 0,
-      "VerticalTabListWidth": 256,
-      "DocumentGroups": [
-        {
-          "DockedWidth": 200,
-          "SelectedChildIndex": 2,
-          "Children": [
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "BlVisionPro.h",
-              "DocumentMoniker": "D:\\WorkCode\\ENRIT\\BlVisionPro\\BlVisionPro.h",
-              "RelativeDocumentMoniker": "BlVisionPro\\BlVisionPro.h",
-              "ToolTip": "D:\\WorkCode\\ENRIT\\BlVisionPro\\BlVisionPro.h",
-              "RelativeToolTip": "BlVisionPro\\BlVisionPro.h",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAiwAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
-              "WhenOpened": "2025-06-04T08:27:51.477Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "IncludeVision.h",
-              "DocumentMoniker": "D:\\WorkCode\\ENRIT\\BlVisionPro\\IncludeVision.h",
-              "RelativeDocumentMoniker": "BlVisionPro\\IncludeVision.h",
-              "ToolTip": "D:\\WorkCode\\ENRIT\\BlVisionPro\\IncludeVision.h",
-              "RelativeToolTip": "BlVisionPro\\IncludeVision.h",
-              "ViewState": "AgIAAGwAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
-              "WhenOpened": "2025-06-04T08:26:26.236Z"
-            }
-          ]
-        },
-        {
-          "DockedWidth": 200,
-          "SelectedChildIndex": -1,
-          "Children": [
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{28836128-fc2c-11d2-a433-00c04f72d18a}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{68487888-204a-11d3-87eb-00c04f7971a5}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{004be353-6879-467c-9d1e-9ac23cdf6d49}"
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/.vs/ENRIT/v17/Solution.VC.db b/.vs/ENRIT/v17/Solution.VC.db
deleted file mode 100644
index 85ad330..0000000
--- a/.vs/ENRIT/v17/Solution.VC.db
+++ /dev/null
Binary files differ
diff --git a/.vs/ENRIT/v17/fileList.bin b/.vs/ENRIT/v17/fileList.bin
deleted file mode 100644
index a65c655..0000000
--- a/.vs/ENRIT/v17/fileList.bin
+++ /dev/null
Binary files differ
diff --git a/ENRIT/Define/Global_Define.h b/ENRIT/Define/Global_Define.h
index c7a483b..0fd815b 100644
--- a/ENRIT/Define/Global_Define.h
+++ b/ENRIT/Define/Global_Define.h
@@ -257,6 +257,7 @@
 	virtual void		IV2M_InitView(Init_View_Command eVew) = 0;
 
 	virtual void		IV2M_LoadImageFullFile(int iSide, CGlass_Data *pGlassData = NULL, std::function<void(BYTE)> _Func = nullptr) = 0;
+	virtual void		IV2M_LoadImageFromFolder(int iSide, const CString& strFolderPath, CGlass_Data* pGlassData = NULL, std::function<void(BYTE)> _Func = nullptr) = 0;
 	virtual BOOL		IV2M_SaveFullImage(CString strPath,int iSide,CPoint ptStart,int nLength) = 0;
 
 	virtual BOOL		IV2M_RecipeChange(CString strRecipe) = 0;
diff --git a/ENRIT/MainFrm.cpp b/ENRIT/MainFrm.cpp
index 1db8ef5..d7a1197 100644
--- a/ENRIT/MainFrm.cpp
+++ b/ENRIT/MainFrm.cpp
@@ -243,6 +243,73 @@
 	m_pView->SetTransferData(&m_TransferData);
 }
 
+CString CMainFrame::GetGlassIDFromFolder(const CString& strFolderPath)
+{
+	// 查找图像文件
+	CFileFind finder;
+	BOOL bWorking = finder.FindFile(strFolderPath + _T("\\*.jpg"));
+	if (!bWorking) {
+		g_pLog->DisplayMessage(_T("No image files found in folder!"));
+		return _T("");
+	}
+
+	// 找到第一个有效文件
+	CString strGlassID;
+	while (bWorking) {
+		bWorking = finder.FindNextFile();
+		if (!finder.IsDots()) {
+			CString strFileName = finder.GetFileName();
+			int nPos = strFileName.Find(_T("__"));
+			if (nPos > 0)
+			{
+				strGlassID = strFileName.Left(nPos);
+				break;
+			}
+		}
+	}
+
+	if (strGlassID.IsEmpty()) {
+		g_pLog->DisplayMessage(_T("No valid image files found!"));
+	}
+
+	return strGlassID;
+}
+
+void CMainFrame::LoadImageSetFromFolder(const CString& strFolderPath, const CString& strGlsID, int iSide, CGlass_Data* pGlassData, std::function<void(BYTE)> _Func)
+{
+	char str_filename[200];
+	int nStartY = 0, nHeight = 0;
+	for (int j = 0; j < 6; j++) {
+		CString strPath;
+		strPath.Format(_T("%s\\%s__%s_%d.jpg"), strFolderPath, strGlsID, PANEL_SIDE[iSide], j);
+
+		USES_CONVERSION;
+		sprintf_s(str_filename, "%s", W2A(strPath));
+		if (access(str_filename, 0) == 0) {
+			nHeight = LoadFullImage(strPath, iSide, nStartY);
+			if (nHeight == -1) {
+				break;
+			}
+			nStartY += nHeight;
+		}
+		else {
+			break;
+		}
+	}
+
+	if (pGlassData != NULL) {
+		INS_EDGE_RESULT_INFO* pResInfo = pGlassData->GetEdgeResultInfo((DimensionDir)iSide);
+		if (pResInfo != NULL) {
+			pResInfo->nGlassStartLine = 0;
+			pResInfo->nGlassEndLine = nStartY;
+		}
+	}
+
+	if (_Func != nullptr) {
+		_Func(iSide);
+	}
+}
+
 BOOL CMainFrame::IV2M_RecipeChange(CString strRecipe)
 {
 	m_strReserveRecipe.Empty();
@@ -669,7 +736,7 @@
 			CString strGlsID, strTmp , strExt;
 
 			strExt	 = dlg.GetFileExt();
-			strGlsID =dlg.GetFileName();
+			strGlsID = dlg.GetFileName();
 			strGlsID = strGlsID.Left(strGlsID.Find(_T("__")));
 			g_pBase->m_strHPanelID = strGlsID;
 
@@ -721,6 +788,50 @@
 	g_pLog->DisplayMessage(_T("Loading Full Image Completed"));	
 }
 
+void CMainFrame::IV2M_LoadImageFromFolder(int iSide, const CString& strFolderPath, CGlass_Data* pGlassData, std::function<void(BYTE)> _Func)
+{
+	if (IsScanNow()) {
+		g_pLog->DisplayMessage(_T("Doing Inspection"));
+		return;
+	}
+
+	if (m_bManualProcessStart == TRUE) {
+		g_pLog->DisplayMessage(_T("Doing Manual Process"));
+		return;
+	}
+
+	CFileFind finder;
+	BOOL bWorking = finder.FindFile(strFolderPath + _T("\\*.jpg"));
+	if (!bWorking) {
+		g_pLog->DisplayMessage(_T("No image files found in folder!"));
+		return;
+	}
+
+	m_bManualProcessStart = TRUE;
+	SetSlashText(GLOBAL_DEFINE::emShow, _T(""), RGB(0, 0, 0));
+	SetSlashText(GLOBAL_DEFINE::emText, _T("Image Loading Start"), RGB(0, 0, 0));
+
+	// 提取产品ID
+	CString strGlsID = GetGlassIDFromFolder(strFolderPath);
+	g_pBase->m_strHPanelID = strGlsID;
+
+	if (iSide > -1) {
+		// 单侧加载
+		LoadImageSetFromFolder(strFolderPath, strGlsID, iSide, pGlassData, _Func);
+	}
+	else {
+		// 全侧加载
+		for (int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
+			LoadImageSetFromFolder(strFolderPath, strGlsID, i, pGlassData, _Func);
+		}
+	}
+
+	SetSlashText(GLOBAL_DEFINE::emHide, _T("Loading Full Image Completed"), RGB(0, 0, 0));
+
+	m_bManualProcessStart = FALSE;
+	g_pLog->DisplayMessage(_T("Loading Full Image Completed"));
+}
+
 void CMainFrame::DisplayMessage(TCHAR* str)
 {
 	WriteLogManager(str);
diff --git a/ENRIT/MainFrm.h b/ENRIT/MainFrm.h
index 0b59b86..caaba75 100644
--- a/ENRIT/MainFrm.h
+++ b/ENRIT/MainFrm.h
@@ -42,6 +42,7 @@
 	virtual LPBYTE		IV2M_GetGrabBufferByDimension(DimensionDir eDim,int iVline);
 	virtual BOOL		IV2M_SetLiveGrabCommand(DimensionDir eDim,BOOL bStop);
 	virtual void		IV2M_LoadImageFullFile(int iSide, CGlass_Data *pGlassData = NULL, std::function<void(BYTE)> _Func = nullptr);
+	virtual void		IV2M_LoadImageFromFolder(int iSide, const CString& strFolderPath, CGlass_Data* pGlassData = NULL, std::function<void(BYTE)> _Func = nullptr);
 	virtual BOOL		IV2M_SaveFullImage(CString strPath,int iSide,CPoint ptStart,int nLength);
 	virtual BOOL		IV2M_RecipeChange(CString strRecipe);
 	virtual void		IV2M_InitView(Init_View_Command eVew);
@@ -66,6 +67,8 @@
 	BOOL				GetRegistryRcpName(CString& strRecipe);
 	void				SetRegistryRcpName(CString strRecipe);
 	void				ApplyViewRecipeSettingss();
+	CString				GetGlassIDFromFolder(const CString& strFolderPath);
+	void				LoadImageSetFromFolder(const CString& strFolderPath, const CString& strGlsID, int iSide, CGlass_Data* pGlassData, std::function<void(BYTE)> _Func);
 
 // 积己等 皋矫瘤 甘 窃荐
 protected:
diff --git a/ENRIT/View/ViewScanImage.cpp b/ENRIT/View/ViewScanImage.cpp
index 25de260..836e7cd 100644
--- a/ENRIT/View/ViewScanImage.cpp
+++ b/ENRIT/View/ViewScanImage.cpp
@@ -1276,17 +1276,24 @@
 	}
 	else if(pDlg->m_nThreadCmd == M_CMD_IMG_LOAD_ALL)
 	{
-		if(pDlg->m_IV2M == NULL)
+		if (pDlg->m_IV2M == NULL) {
 			return 0;
+		}
 
-		pDlg->m_IV2M->IV2M_LoadImageFullFile(-1,pDlg->m_pGlassData, [&] (BYTE iSide)
-		{
-			int			iView = pDlg->GetViewIndex(iSide);		
-
+		pDlg->m_IV2M->IV2M_LoadImageFullFile(-1,pDlg->m_pGlassData, [&] (BYTE iSide) {
+			int	iView = pDlg->GetViewIndex(iSide);		
 			pDlg->InitScrollInfo(iSide,0);
 			pDlg->m_frameImg[iView].Invalidate(FALSE);
 			pDlg->m_frameImg[iView].Invalidate();
 		});
+
+		//CString strFolderPath = _T("D:\\备份\\光检机\\EI、Rcut\\RCUT\\图片\\n8_NG");
+		//pDlg->m_IV2M->IV2M_LoadImageFromFolder(-1, strFolderPath, pDlg->m_pGlassData, [&](BYTE iSide) {
+		//	int iView = pDlg->GetViewIndex(iSide);
+		//	pDlg->InitScrollInfo(iSide, 0);
+		//	pDlg->m_frameImg[iView].Invalidate(FALSE);
+		//	pDlg->m_frameImg[iView].Invalidate();
+		//});
 	}
 	else if(pDlg->m_nThreadCmd == M_CMD_IMG_SAVE_ALL)
 	{

--
Gitblit v1.9.3