From 3ce48f6dbeb537e252edb0d62c88a28796e36674 Mon Sep 17 00:00:00 2001
From: SWK <sungwk82@diteam.co.kr>
Date: 월, 26 12월 2022 15:04:42 +0900
Subject: [PATCH] ongoing60 #4403 CF AOI Review TACT 지연 개선 1. 신호 출력 방식 재개선  - 유지 시간이 없는 신호는 바로 출력 진행하도록 변경 2. 불필요 Delay 제거 및 시퀀스 변경  - 얼라인 측정 종료 처리 간 제어 신호 먼저 출력 후 카메라 Stop으로 변경  - 물류 정보 읽기 처리 후 1000ms Delay 삭제  - 얼라인 측정 시작(카메라 Live Start) 후 Delay 300ms -> 100ms(이미지 들어오는 시간 확보 필요)  - ReadRawFile 처리 시작 전 500ms Delay 삭제  - Path Scheduling 완료 후 Review Ready 신호 출력 전 1000ms Delay 삭제 3. 버그 수정  - 이미지 저장 경로 생성 간 예외 처리 부분 버그 수정 4. 로그 시간 출력 불합리 개선  - 로그 시간이 파일 출력 시점으로 작성되어 로그 스래드 지연 시 시간이 맞지 않는 불합리 있음  - 로그 시간은 로그 발생 시점에 시간 저장, 해당 시간 이용하여 파일에 기록하도록 변경

---
 ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp |  140 +++++++++++++++++++++++++++++++---------------
 1 files changed, 93 insertions(+), 47 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
index 3c4fe43..086a65f 100644
--- a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -1228,11 +1228,12 @@
 			  int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 			  int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-			  m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			  //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			  m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
 			  m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
 			  m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
 
-			  if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+			  if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 			  {
 				  m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 			  }
@@ -1243,11 +1244,12 @@
 			  int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 			  int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-			  m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			  //m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			  m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
 			  m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
 			  m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
 
-			  if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+			  if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 			  {
 				  m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 			  }
@@ -1278,11 +1280,12 @@
 			int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 			int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			//m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
 			m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
 			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
 			
-			if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+			if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 			{
 				m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 			}
@@ -1294,11 +1297,12 @@
 			int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 			int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			//m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
 			m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
 			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
 
-			if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+			if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 			{
 				m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 			}
@@ -1412,11 +1416,12 @@
 					int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 					int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-					m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+					//m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+					m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
 					m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
 					m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
 
-					if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+					if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 					{
 						m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 					}
@@ -1427,11 +1432,12 @@
 					int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 					int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-					m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+					//m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+					m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
 					m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
 					m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
 
-					if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+					if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 					{
 						m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 					}
@@ -1483,11 +1489,12 @@
 			int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 			int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			//m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetReview00ImageContrast(round(dFocusValue));
 			m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
 			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
 
-			if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+			if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 			{
 				m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 			}
@@ -1498,11 +1505,12 @@
 			int nDefocusValueMin = pSignalInfo->GetDefocusValueMin();
 			int nDefocusValueMax = pSignalInfo->GetDefocusValueMax();
 
-			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			//m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetReview01ImageContrast(round(dFocusValue));
 			m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
 			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
 
-			if (dFocusValue < nDefocusValueMin && dFocusValue > nDefocusValueMax)
+			if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax)
 			{
 				m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000);
 			}
@@ -3805,49 +3813,87 @@
 	BYTE *pImageBufferByte = (BYTE*)(pImageBuffer);
 	if (pImageBuffer==NULL) return 0.;
 
+	//#3524_210902_LYW_MOD START
 	int nWidth = nImageWidth;
+	//int nWidthStep = nImageWidth;
 	int nHeight = nImageHeight;
-	int nCalWidth = nWidth/2;
-	int nCalHeight = nHeight/2;
+	// 	int nCalWidth = nWidth/2;
+	// 	int nCalHeight = nHeight/2;
+	// 
+	// 	int nStartX = nWidth/2 - nCalWidth/2;
+	// 	int nStartY = nHeight/2 - nCalHeight/2;
 
-	int nStartX = nWidth/2 - nCalWidth/2;
-	int nStartY = nHeight/2 - nCalHeight/2;
+	int nCalWidth = nWidth;
+	int nCalHeight = nHeight;
 
-	//
-	double Focusvalue = 0;
-	double SumValue = 0;
-	double TempValue = 0;
-	double m_nResultFocusValue = 0;
+	int nStartX = 0;
+	int nStartY = 0;
 
-	for (int y = 0; y < nHeight - 1; y++)
+	int nStep = 3;
+
+	double dXValue = 0., dYValue = 0., dCurr = 0., dSum = 0., dFocus = 0.;
+	for (int nH = nStartY; nH < nStartY + nCalHeight - nStep; nH++)
 	{
-		for (int x = 0; x < nWidth - 1; x++)
+		for (int nW = nStartX; nW < nStartX + nCalWidth - nStep; nW++)
 		{
-			TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[y*nWidth + x + 1]);
-			SumValue = TempValue * TempValue;
-			TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[(y + 1)*nWidth + x]);
-			SumValue += TempValue * TempValue;
-
-			Focusvalue += sqrt(SumValue);
-			//Focusvalue += SumValue;
-		}
-	}
-
-	m_nResultFocusValue = int(Focusvalue / (double)(nWidth*nHeight));
-
-	double dXValue=0., dYValue=0., dCurr=0., dSum=0., dFocus=0.;
-	for(int nH=nStartY ; nH<nStartY+nCalHeight-1 ; nH++)
-	{
-		for(int nW=nStartX ; nW<nStartX+nCalWidth-1 ; nW++)
-		{
-			dXValue = float((pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW]));
-			dYValue = float((pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW]));
+			dXValue = float((pImageBufferByte[nH*nWidth + nW + nStep] - pImageBufferByte[nH*nWidth + nW])*(pImageBufferByte[nH*nWidth + nW + nStep] - pImageBufferByte[nH*nWidth + nW]));
+			dYValue = float((pImageBufferByte[(nH + nStep)*nWidth + nW] - pImageBufferByte[nH*nWidth + nW])*(pImageBufferByte[(nH + nStep)*nWidth + nW] - pImageBufferByte[nH*nWidth + nW]));
 			dCurr = sqrt(dXValue + dYValue);
+			//break;
+
 			dSum += dCurr;
 		}
 	}
-	dFocus = dSum/double(nCalWidth*nCalHeight);
+	dFocus = dSum / double(nCalWidth*nCalHeight);
+
+	if (dFocus >= 10.0) dFocus = 10.0;
 
 	return dFocus;
+	//#3524_210902_LYW_MOD END
+	//Origin
+// 	int nWidth = nImageWidth;
+// 	int nHeight = nImageHeight;
+// 	int nCalWidth = nWidth/2;
+// 	int nCalHeight = nHeight/2;
+// 
+// 	int nStartX = nWidth/2 - nCalWidth/2;
+// 	int nStartY = nHeight/2 - nCalHeight/2;
+// 
+// 	//
+// 	double Focusvalue = 0;
+// 	double SumValue = 0;
+// 	double TempValue = 0;
+// 	double m_nResultFocusValue = 0;
+// 
+// 	for (int y = 0; y < nHeight - 1; y++)
+// 	{
+// 		for (int x = 0; x < nWidth - 1; x++)
+// 		{
+// 			TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[y*nWidth + x + 1]);
+// 			SumValue = TempValue * TempValue;
+// 			TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[(y + 1)*nWidth + x]);
+// 			SumValue += TempValue * TempValue;
+// 
+// 			Focusvalue += sqrt(SumValue);
+// 			//Focusvalue += SumValue;
+// 		}
+// 	}
+// 
+// 	m_nResultFocusValue = int(Focusvalue / (double)(nWidth*nHeight));
+// 
+// 	double dXValue=0., dYValue=0., dCurr=0., dSum=0., dFocus=0.;
+// 	for(int nH=nStartY ; nH<nStartY+nCalHeight-1 ; nH++)
+// 	{
+// 		for(int nW=nStartX ; nW<nStartX+nCalWidth-1 ; nW++)
+// 		{
+// 			dXValue = float((pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW]));
+// 			dYValue = float((pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW]));
+// 			dCurr = sqrt(dXValue + dYValue);
+// 			dSum += dCurr;
+// 		}
+// 	}
+// 	dFocus = dSum/double(nCalWidth*nCalHeight);
+// 
+// 	return dFocus;
 }
 

--
Gitblit v1.9.3