From c6e24163c3c852b4ac3e45d100b9253b3db0e182 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 15 八月 2025 16:59:00 +0800
Subject: [PATCH] 1. 保存数据优化,提取公共区域,方便后期修改和扩展

---
 EdgeInspector_App/InterfaceManager.cpp |  128 ++++++++++++++++++++++++++----------------
 1 files changed, 78 insertions(+), 50 deletions(-)

diff --git a/EdgeInspector_App/InterfaceManager.cpp b/EdgeInspector_App/InterfaceManager.cpp
index 86bd20c..34ff381 100644
--- a/EdgeInspector_App/InterfaceManager.cpp
+++ b/EdgeInspector_App/InterfaceManager.cpp
@@ -581,13 +581,13 @@
 	DWORD dwTick = GetTickCount();
 	g_pLog->DisplayMessage(_T("Full Image Save Start"));
 
-	int					iCam,iScan;
-	CHardwareSettings	*pHard = &m_HardwareRecipe;
-	CCameraSettings		*pCamera;	
-	CGlassRecipe		*pGlsRcp = &m_GlassRecipe;
-	CString				strFolder,strFileJpg,strPanelID;
-	pINSPECTFULLIMAGE_BUFFER pBuffer;	
-	int					nQuality = pHard->m_nSaveImageQuality;
+	int	iCam, iScan;
+	CHardwareSettings* pHard = &m_HardwareRecipe;
+	CCameraSettings* pCamera;
+	CGlassRecipe* pGlsRcp = &m_GlassRecipe;
+	CString	strFolder, strFileJpg, strPanelID;
+	pINSPECTFULLIMAGE_BUFFER pBuffer;
+	int	nQuality = pHard->m_nSaveImageQuality;
 
 	if (nQuality < 0 || nQuality > 100) {
 		nQuality = 30;
@@ -601,24 +601,24 @@
 		strPanelID = _T("TestGlass");
 	}
 
-	for(iCam=0;iCam<pHard->GetCameraCount();iCam++) {		
-		for(iScan=0;iScan<MAX_SCAN_COUNT;iScan++) {
-			pCamera = pHard->GetCameraSettings(iCam,iScan);
+	for (iCam = 0; iCam < pHard->GetCameraCount(); iCam++) {
+		for (iScan = 0; iScan < MAX_SCAN_COUNT; iScan++) {
+			pCamera = pHard->GetCameraSettings(iCam, iScan);
 			if (pCamera == NULL) {
 				continue;
 			}
 
-			pBuffer = m_pInspect[iCam]->GetFullImgBuffer(iScan);		
+			pBuffer = m_pInspect[iCam]->GetFullImgBuffer(iScan);
 			if (pBuffer == NULL) {
 				continue;
 			}
 
 			g_pLog->DisplayMessage(_T("Sava %s iCam=%d, iScan=%d, szImage.cx=%ld, pBuffer->szImage.cy=%ld"), PANEL_SIDE[pCamera->m_eDimension], iCam, iScan, pBuffer->szImage.cx, pBuffer->szImage.cy);
 
-			if(pBuffer->pImage != NULL && pBuffer->szImage.cx > 100 && pBuffer->szImage.cy > 100) {
-				strFileJpg.Format(_T("%s\\%s_%s_%s.jpg"),strFolder, strPanelID, PANEL_SIDE[pCamera->m_eDimension],g_pBase->m_strLoadingTime);
+			if (pBuffer->pImage != NULL && pBuffer->szImage.cx > 100 && pBuffer->szImage.cy > 100) {
+				strFileJpg.Format(_T("%s\\%s_%s_%s.jpg"), strFolder, strPanelID, PANEL_SIDE[pCamera->m_eDimension], g_pBase->m_strLoadingTime);
 				SaveFullImageModern(strFileJpg, pBuffer->pImage, pBuffer->szImage.cx, pBuffer->szImage.cy, (int)pCamera->m_eDimension, 0, nQuality);
-			}		
+			}
 		}
 	}
 	g_pLog->DisplayMessage(_T("Full Image Save Completed : Time[%d]"),GetTickCount()-dwTick);
@@ -868,10 +868,15 @@
 
 			g_pStatus->m_iScanIdx = 1;			
 
-			AfxBeginThread(ScanStartCam_0,this);
-			AfxBeginThread(ScanStartCam_1,this);
-			AfxBeginThread(ScanStartCam_2,this);
-			AfxBeginThread(ScanStartCam_3,this);
+			AfxBeginThread(ScanStartCam_0, this);
+			AfxBeginThread(ScanStartCam_1, this);
+			AfxBeginThread(ScanStartCam_2, this);
+			AfxBeginThread(ScanStartCam_3, this);
+
+			if (m_HardwareRecipe.m_bUseRipInspection) {
+				AfxBeginThread(ScanStartCam_4, this);
+				AfxBeginThread(ScanStartCam_5, this);
+			}
 
 			AfxBeginThread(CheckScanStart,this);
 		}
@@ -884,10 +889,15 @@
 
 			g_pStatus->m_iScanIdx = 0;
 
-			AfxBeginThread(ScanStartCam_0,this);
-			AfxBeginThread(ScanStartCam_1,this);
-			AfxBeginThread(ScanStartCam_2,this);
-			AfxBeginThread(ScanStartCam_3,this);
+			AfxBeginThread(ScanStartCam_0, this);
+			AfxBeginThread(ScanStartCam_1, this);
+			AfxBeginThread(ScanStartCam_2, this);
+			AfxBeginThread(ScanStartCam_3, this);
+
+			if (m_HardwareRecipe.m_bUseRipInspection) {
+				AfxBeginThread(ScanStartCam_4, this);
+				AfxBeginThread(ScanStartCam_5, this);
+			}
 
 			AfxBeginThread(CheckScanStart,this);
 
@@ -901,20 +911,16 @@
 
 UINT CInterfaceManager::CheckScanStart(LPVOID pParam)
 {
-	CInterfaceManager	*pInter = static_cast<CInterfaceManager*>(pParam);
+	CInterfaceManager *pInter = static_cast<CInterfaceManager*>(pParam);
+	double CurTime = GetTickCount();
 
-	double		CurTime = GetTickCount();
-	
-	do 
-	{
-		if (GetTickCount() - CurTime > 10000)
-		{
+	do {
+		if (GetTickCount() - CurTime > 10000) {
 			g_pLog->DisplayMessage(_T("Scan Start Ack TimeOut : Scan %d-%d"),g_pStatus->m_iScanIdx,pInter->m_nScanStartCount);
 			break;
 		}
 
-		if(pInter->m_nScanStartCount == MAX_CAMERA_COUNT)
-		{
+		if(pInter->m_nScanStartCount == MAX_CAMERA_COUNT) {
 			g_pLog->DisplayMessage(_T("Scan Start Ack Ok : Scan %d-%d"),g_pStatus->m_iScanIdx,pInter->m_nScanStartCount);
 			break;
 		}
@@ -923,13 +929,11 @@
 	} while (1);
 	
 	g_pLog->DisplayMessage(_T("Scan Start Ack Signal Send : Scan %d-%d"),g_pStatus->m_iScanIdx,pInter->m_nScanStartCount);
-	if(g_pStatus->m_iScanIdx == 0)
-	{			
+	if(g_pStatus->m_iScanIdx == 0) {			
 		if(pInter->m_pThread_SendMSG != NULL)
 			pInter->m_pThread_SendMSG->AddSendMSG(SEND_MESSAGE_CONTROLSIGNAL,IToC_Ack_LongScanStartSuccess,TRUE);
 	}
-	else
-	{
+	else {
 		if(pInter->m_pThread_SendMSG != NULL)
 			pInter->m_pThread_SendMSG->AddSendMSG(SEND_MESSAGE_CONTROLSIGNAL,IToC_Ack_ShortScanStartSuccess,TRUE);
 	}
@@ -956,21 +960,19 @@
 	int nPeriod = m_HardwareRecipe.m_nFreerunPeriod;
 	int nExposureTime = m_HardwareRecipe.m_nFreerunExposureTime;
 
-	CCameraSettings *pCamSettings = m_HardwareRecipe.GetCameraSettings(iCam,g_pStatus->m_iScanIdx);
-
-	g_pStatus->SetGrabFrametoScan(g_pStatus->m_iScanIdx,pCamSettings->m_nGrabFrameCount);
-	if(m_pGrabber[iCam] != NULL)
-	{
-		m_pGrabber[iCam]->GrabScanStart(g_pStatus->m_iScanIdx,bFreerun,nPeriod,nExposureTime);
+	CCameraSettings* pCamSettings = m_HardwareRecipe.GetCameraSettings(iCam, g_pStatus->m_iScanIdx);
+	g_pStatus->SetGrabFrametoScan(iCam, g_pStatus->m_iScanIdx, pCamSettings->m_nGrabFrameCount);
+	if(m_pGrabber[iCam] != NULL) {
+		m_pGrabber[iCam]->GrabScanStart(g_pStatus->m_iScanIdx, bFreerun, nPeriod, nExposureTime);
+		g_pLog->DisplayMessage(_T("Cam %d Scan %d Grab Start : GrabFrameCount %d"), iCam, g_pStatus->m_iScanIdx, pCamSettings->m_nGrabFrameCount);
+		g_pLog->DisplayMessage(_T("Cam %d Scan %d Grab Start : bFreerun %d, nPeriod %d, nExposureTime %d"),iCam, g_pStatus->m_iScanIdx, bFreerun, nPeriod, nExposureTime);
 	}
 
-	if(m_pInspect[iCam] != NULL)
-	{
+	if(m_pInspect[iCam] != NULL) {
 		m_pInspect[iCam]->SetSimulation(FALSE);
 		m_pInspect[iCam]->SetViewScanHWnd(m_pView->GetViewScanHWnd());
 
-		if(m_pInspect[iCam]->ScanStart(g_pStatus->m_iScanIdx) == FALSE)
-		{
+		if(m_pInspect[iCam]->ScanStart(g_pStatus->m_iScanIdx) == FALSE) {
 			g_pLog->DisplayMessage(_T("Cam %d Scan %d Start Fail"),iCam,g_pStatus->m_iScanIdx);
 		}
 	}
@@ -1013,6 +1015,24 @@
 	CInterfaceManager	*pInter = static_cast<CInterfaceManager*>(pParam);
 
 	pInter->ScanStartCamera(3);
+
+	return 0;
+}
+
+UINT CInterfaceManager::ScanStartCam_4(LPVOID pParam)
+{
+	CInterfaceManager* pInter = static_cast<CInterfaceManager*>(pParam);
+
+	pInter->ScanStartCamera(4);
+
+	return 0;
+}
+
+UINT CInterfaceManager::ScanStartCam_5(LPVOID pParam)
+{
+	CInterfaceManager* pInter = static_cast<CInterfaceManager*>(pParam);
+
+	pInter->ScanStartCamera(5);
 
 	return 0;
 }
@@ -1486,8 +1506,7 @@
 		Param.nScanCount = g_pBase->m_nScanCount;
 		Param.nBoardIdx = g_pBase->m_nBoardID[iCam];
 		Param.nBoardCh = g_pBase->m_nBoardCh[iCam];
-		Param.nImgFlipX = 0;		
-		Param.nBoardCh = 0;
+		Param.nImgFlipX = 0;
 		Param.nCameraIdx = iCam;
 		Param.nCameraScan = 0;
 
@@ -1566,8 +1585,9 @@
 			Param.nBoardIdx = nBoardId;
 		}
 
-		if(Param.nBoardIdx < 0)
+		if (Param.nBoardIdx < 0) {
 			Param.nBoardIdx = nBoardId;
+		}
 
 		g_pLog->DisplayMessage( _T("Grabber Board ID[%d-%d]-Init"), Param.nBoardIdx, iCam);	
 
@@ -1825,7 +1845,13 @@
 	strSavePath += _T(".jpg");
 
 	Lock();
-	FIBITMAP* bitmap = FreeImage_Allocate(IMAGE_WIDTH, nLineCnt, 8);
+	FIBITMAP* bitmap = nullptr;
+	int nImageWidth = IMAGE_WIDTH;
+	if (iSide > DIMENSION_D_DN) {
+		nImageWidth = IMAGE_WIDTH / 2;
+	}
+	bitmap = FreeImage_Allocate(nImageWidth, nLineCnt, 8);
+
 	if (bitmap == NULL) {
 		Unlock();
 		return FALSE;
@@ -1844,7 +1870,7 @@
 		return FALSE;
 	}
 
-	CopyMemory(pBitBuffer, lpImg, IMAGE_WIDTH * nLineCnt);
+	CopyMemory(pBitBuffer, lpImg, nImageWidth * nLineCnt);
 
 	USES_CONVERSION;
 	char str_filename[1024];
@@ -1877,6 +1903,8 @@
 	double dRatio = 1. - tmp;
 	dRatio = dRatio - 0.01 < 0.0 ? 1.0 : dRatio;
 
+	g_pLog->DisplayMessage(_T("Save Full Image Start(%s, %s, %d, %d, %d)"), strPath, PANEL_SIDE[iSide], nStartY, nImgHeight, nQuality);
+
 #if 0
 	IplImage* pImg = cvCreateImageHeader(cvSize(nImgWidth, nImgHeight), 8, 1);
 	IplImage* pImgNew = cvCreateImage(cvSize((int)(nImgWidth * dRatio), (int)(nImgHeight * dRatio)), 8, 1);

--
Gitblit v1.9.3