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/View/ViewScanImage.cpp | 104 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 92 insertions(+), 12 deletions(-)
diff --git a/ENRIT/View/ViewScanImage.cpp b/ENRIT/View/ViewScanImage.cpp
index 2ba97fb..b15dd60 100644
--- a/ENRIT/View/ViewScanImage.cpp
+++ b/ENRIT/View/ViewScanImage.cpp
@@ -34,7 +34,10 @@
m_nThreadCmd = 0;
m_IV2M = NULL;
m_pHardware = NULL;
- m_pGlassData = NULL;
+ m_pGlassData = NULL;
+
+ m_nCurrentFolderIndex = 0;
+ m_bIsBatchProcessing = FALSE;
}
CViewScanImage::~CViewScanImage()
@@ -116,7 +119,10 @@
BEGIN_MESSAGE_MAP(CViewScanImage, CDialogEx)
ON_WM_VSCROLL()
ON_WM_HSCROLL()
-
+ ON_WM_SHOWWINDOW()
+ ON_WM_TIMER()
+ ON_WM_PAINT()
+ ON_WM_MOUSEWHEEL()
ON_BN_CLICKED(IDC_BTN_LOAD1, &CViewScanImage::OnBnClickedBtnLoad1)
ON_BN_CLICKED(IDC_BTN_SAVE1, &CViewScanImage::OnBnClickedBtnSave1)
ON_BN_CLICKED(IDC_BTN_LOAD2, &CViewScanImage::OnBnClickedBtnLoad2)
@@ -127,9 +133,7 @@
ON_BN_CLICKED(IDC_BTN_SAVE4, &CViewScanImage::OnBnClickedBtnSave4)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_ZOOM, &CViewScanImage::OnNMCustomdrawSliderZoom)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ZOOM, &CViewScanImage::OnNMReleasedcaptureSliderZoom)
- ON_WM_MOUSEWHEEL()
ON_BN_CLICKED(IDC_UPDN_WIDTH1, &CViewScanImage::OnBnClickedUpdnWidth1)
-
ON_BN_CLICKED(IDC_UPDN_WIDTH2, &CViewScanImage::OnBnClickedUpdnWidth2)
ON_BN_CLICKED(IDC_UPDN_WIDTH3, &CViewScanImage::OnBnClickedUpdnWidth3)
ON_BN_CLICKED(IDC_UPDN_WIDTH4, &CViewScanImage::OnBnClickedUpdnWidth4)
@@ -145,11 +149,9 @@
ON_BN_CLICKED(IDC_BTN_SAVE7, &CViewScanImage::OnBnClickedBtnSave7)
ON_BN_CLICKED(IDC_BTN_LOAD8, &CViewScanImage::OnBnClickedBtnLoad8)
ON_BN_CLICKED(IDC_BTN_SAVE8, &CViewScanImage::OnBnClickedBtnSave8)
- ON_BN_CLICKED(IDC_CHECK_AUTO_SIZE, &CViewScanImage::OnBnClickedCheckAutoSize)
- ON_WM_SHOWWINDOW()
- ON_WM_TIMER()
- ON_WM_PAINT()
- ON_MESSAGE(WM_POCESS_STATUS , OnProcessStatus)
+ ON_BN_CLICKED(IDC_CHECK_AUTO_SIZE, &CViewScanImage::OnBnClickedCheckAutoSize)
+ ON_MESSAGE(WM_POCESS_STATUS , &CViewScanImage::OnProcessStatus)
+ ON_MESSAGE(WM_BATCH_PROCESS_NEXT, &CViewScanImage::OnBatchProcessNext)
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CViewScanImage, CDialogEx)
@@ -160,6 +162,9 @@
ON_EVENT(CViewScanImage, IDC_BTN_PROC, DISPID_CLICK, CViewScanImage::OnBnClickedBtnProc, VTS_NONE)
ON_EVENT(CViewScanImage, IDC_BTN_LOAD_ALL, DISPID_CLICK, CViewScanImage::OnBnClickedLoadAll, VTS_NONE)
ON_EVENT(CViewScanImage, IDC_SAVE_ALL, DISPID_CLICK, CViewScanImage::OnBnClickedSaveAll, VTS_NONE)
+ ON_EVENT(CViewScanImage, IDC_BTN_START_BATCH, DISPID_CLICK, CViewScanImage::OnBtnStartBatch, VTS_NONE)
+ ON_EVENT(CViewScanImage, IDC_BTN_STOP_BATCH, DISPID_CLICK, CViewScanImage::OnBtnStopBatch, VTS_NONE)
+ ON_EVENT(CViewScanImage, IDC_BTN_STOP_BATCH2, DISPID_CLICK, CViewScanImage::OnClickBtnStopBatch2, VTS_NONE)
END_EVENTSINK_MAP()
@@ -345,6 +350,18 @@
m_frameImg[nIndex].ViewUpdate();
}
return 1;
+}
+
+LRESULT CViewScanImage::OnBatchProcessNext(WPARAM wParam, LPARAM lParam)
+{
+ if (!m_bIsBatchProcessing) {
+ return 0;
+ }
+
+ m_nCurrentFolderIndex++;
+ ProcessNextFolder();
+
+ return 0;
}
void CViewScanImage::SetRecipe(CHardwareSettings *pHW)
@@ -636,7 +653,6 @@
scrollInfoH.nTrackPos = 64;
double dZoom = m_frameImg[0].GetZoomData();
-
scrollInfoV.nPage = m_frameImg[0].m_WndRect.Height();
scrollInfoH.nPage = (int)(m_frameImg[0].m_WndRect.Width() / dZoom);
@@ -1043,10 +1059,27 @@
void CViewScanImage::OnBnClickedLoadAll() {ManualThreadStart(M_CMD_IMG_LOAD_ALL,-1);}
void CViewScanImage::OnBnClickedSaveAll() {ManualThreadStart(M_CMD_IMG_SAVE_ALL,-1);}
+void CViewScanImage::OnBtnStartBatch()
+{
+ // 启动批处理
+ CFolderPickerDialog dlg(NULL, OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT, this, 0);
+ if (dlg.DoModal() == IDOK) {
+ CString strFolderPath = dlg.GetPathName();
+ m_bIsBatchProcessing = TRUE;
+ StartBatchProcess(strFolderPath);
+ }
+}
+
+void CViewScanImage::OnBtnStopBatch()
+{
+ // 停止批处理
+ m_bIsBatchProcessing = FALSE;
+}
+
BOOL CViewScanImage::ManualThreadStart(int nCmd,int nIndex /*= -1*/)
{
if (m_pManualProcess) {
- DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 3000);
+ DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 10000);
if (dwWait == WAIT_TIMEOUT) {
DWORD dwExitCode;
if ((::GetExitCodeThread(m_pManualProcess->m_hThread, &dwExitCode)) && (dwExitCode == STILL_ACTIVE)) {
@@ -1306,6 +1339,7 @@
}
// 执行处理线程
+ m_nIndex = -1;
switch (m_nShowSelect)
{
case 0:
@@ -1318,6 +1352,47 @@
m_IV2M->IV2M_InspectionProcessAll(M_CMD_PROC_SHORT_START);
break;
}
+ }
+}
+
+void CViewScanImage::StartBatchProcess(const CString& strRootFolder)
+{
+ m_arrFolderList.RemoveAll();
+
+ // 搜索所有子文件夹
+ CFileFind finder;
+ CString strSearchPath = strRootFolder + _T("\\*.*");
+ BOOL bWorking = finder.FindFile(strSearchPath);
+ while (bWorking) {
+ bWorking = finder.FindNextFile();
+
+ // 排除 . 和 .. 以及非文件夹
+ if (finder.IsDots() || !finder.IsDirectory()) {
+ continue;
+ }
+
+ m_arrFolderList.Add(finder.GetFilePath());
+ }
+ finder.Close();
+
+ // 从第一个开始处理
+ m_nCurrentFolderIndex = 0;
+ ProcessNextFolder();
+}
+
+void CViewScanImage::ProcessNextFolder()
+{
+ if (!m_bIsBatchProcessing) {
+ return;
+ }
+
+ if (m_nCurrentFolderIndex < m_arrFolderList.GetSize()) {
+ CString strFolder = m_arrFolderList[m_nCurrentFolderIndex];
+ LoadAndProcessImages(strFolder);
+ }
+ else {
+ m_arrFolderList.RemoveAll();
+ m_bIsBatchProcessing = FALSE;
}
}
@@ -1458,4 +1533,9 @@
else
m_frameImg[i].ResetMode(MODE_AUTO_MEASURE);
}
-}
\ No newline at end of file
+}
+
+void CViewScanImage::OnClickBtnStopBatch2()
+{
+ SendMessage(WM_BATCH_PROCESS_NEXT, NULL, NULL);
+}
--
Gitblit v1.9.3