From daf053dfd30a3c20524d92290be9d3dc2ac599ec Mon Sep 17 00:00:00 2001
From: LWQ <1806950222@qq.com>
Date: 星期三, 30 七月 2025 19:27:02 +0800
Subject: [PATCH] 1.修复:区分测量精度及研磨量距离单像素精度功能 2.修改:上传到CIM的数据

---
 ENRIT/MainFrm.cpp |  174 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 138 insertions(+), 36 deletions(-)

diff --git a/ENRIT/MainFrm.cpp b/ENRIT/MainFrm.cpp
index 1db8ef5..4a25065 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();
@@ -417,7 +484,7 @@
 				pMain->ScanStartManual(iCam,0);						
 			}			
 
-			DWORD		sTime = GetTickCount();
+			DWORD sTime = GetTickCount();
 			while(TRUE)
 			{
 				if(pMain->m_GlassData.GetScanEnd(0) == TRUE)
@@ -616,8 +683,7 @@
 
 		SetSlashText(GLOBAL_DEFINE::emText, _T("Image Loading Start"), RGB(0,0,0));
 
-		if(iSide > -1)
-		{
+		if(iSide > -1) {
 
 			CString strGlsID, strTmp , strExt;
 
@@ -631,85 +697,77 @@
 
 			char str_filename[200];
 
-			for(int i = 0 ; i < 6 ; i++)
-			{
+			for(int i = 0 ; i < 6 ; i++) {
 				strPath.Format(_T("%s\\%s__%s_%d.%s"),strTmp,strGlsID,PANEL_SIDE[iSide],i,strExt);
 				USES_CONVERSION;					
 				sprintf_s(str_filename, "%s", W2A(strPath));
-				if(access(str_filename, 0) == 0)
-				{
-					nHeight = LoadFullImage(strPath,iSide,nStartY);
-					if(nHeight == -1)
+				if(access(str_filename, 0) == 0) {
+					nHeight = LoadFullImage(strPath, iSide, nStartY);
+					if (nHeight == -1) {
 						break;
+					}
+
 					nStartY += nHeight;
 				}
-				else
+				else {
 					break;
+				}
 			}
 
-			if(pGlassData != NULL)
-			{
+			if(pGlassData != NULL) {
 				INS_EDGE_RESULT_INFO *pResInfo = pGlassData->GetEdgeResultInfo((DimensionDir)iSide);
-				if(pResInfo != NULL)
-				{
+				if(pResInfo != NULL) {
 					pResInfo->nGlassStartLine = 0;
 					pResInfo->nGlassEndLine = nStartY;
 				}
-
 			}
 
-			if(_Func != nullptr)
-			{
+			if(_Func != nullptr) {
 				_Func(iSide);
 			}			
 		}
-		else
-		{
+		else {
 
 			CString strGlsID, strTmp , strExt;
 
 			strExt	 = dlg.GetFileExt();
-			strGlsID =dlg.GetFileName();
+			strGlsID = dlg.GetFileName();
 			strGlsID = strGlsID.Left(strGlsID.Find(_T("__")));
 			g_pBase->m_strHPanelID = strGlsID;
 
 			char str_filename[200];
-			for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
-			{
+			for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
 				strTmp = dlg.GetPathName();
 				strTmp = strTmp.Left( strTmp.ReverseFind(_T('\\')));
 
 				nStartY = 0, nHeight = 0;
 
-				for(int j = 0 ; j < 6 ; j++)
-				{
-					strPath.Format(_T("%s\\%s__%s_%d.%s"),strTmp,strGlsID,PANEL_SIDE[i],j,strExt);
+				for(int j = 0 ; j < 6 ; j++) {
+					strPath.Format(_T("%s\\%s__%s_%d.%s"), strTmp, strGlsID, PANEL_SIDE[i], j, strExt);
 
 					USES_CONVERSION;					
 					sprintf_s(str_filename, "%s", W2A(strPath));
-					if(access(str_filename, 0) == 0)
-					{
+					if(access(str_filename, 0) == 0) {
 						nHeight = LoadFullImage(strPath,i,nStartY);
-						if(nHeight == -1)
+						if (nHeight == -1) {
 							break;
+						}
+
 						nStartY += nHeight;
 					}					
-					else
+					else {
 						break;
+					}
 				}
 
-				if(pGlassData != NULL)
-				{
+				if(pGlassData != NULL) {
 					INS_EDGE_RESULT_INFO *pResInfo = pGlassData->GetEdgeResultInfo((DimensionDir)i);
-					if(pResInfo != NULL)
-					{
+					if(pResInfo != NULL) {
 						pResInfo->nGlassStartLine = 0;
 						pResInfo->nGlassEndLine = nStartY;
 					}
-
 				}
-				if(_Func != nullptr)
-				{					
+				if(_Func != nullptr) {					
 					_Func(i);
 				}
 			}
@@ -721,6 +779,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);

--
Gitblit v1.9.3