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