From 55615eba335d4cbc1f83330dc5078fe073034b7d Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 금, 23 7월 2021 10:40:51 +0900
Subject: [PATCH] Ongoing60 #3524 CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선

---
 ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp |  228 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 141 insertions(+), 87 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
index af864fc..0cfb0d2 100644
--- a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -97,7 +97,7 @@
 	}
 
 
-	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙
 
 	wsiResult.nWsi_ResultIndex = measureResut.nResultIndex;
 	wsiResult.nResultCode = measureResut.nResultCode;
@@ -163,7 +163,7 @@
 	memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData));
 
 
-	// 占쏙옙占� 占쏙옙占쏙옙占쏙옙 占쌩곤옙
+	// 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙
 	SReviewResult *pProcessResult = NULL;
 	if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime))
 	{
@@ -192,7 +192,7 @@
 	
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 占쏙옙占� 占쏙옙占쏙옙.
+	// 占쏙옙占?占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult);
 	return;
 
@@ -246,14 +246,14 @@
 		g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx);
 	}
 
-	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙
 	wsiUserResult.nWsi_ResultCode		= measureResut.nResultCode;
 	wsiUserResult.nWsi_Type				= measureResut.nResultType;
 	wsiUserResult.nWsi_SlopeWarn		= measureResut.nXSlopeWarn;
 	memcpy(wsiUserResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiUserResult.pWsi_ResultData));
 
 
-	// 占쏙옙占� 占쏙옙占쏙옙占쏙옙 占쌩곤옙
+	// 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙
 	SReviewResult *pProcessResult = NULL;
 	if (pGlassResult->SetUserWsiResultData(nModuleIndex, nCurResultIdx, wsiUserResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime))
 	{
@@ -282,7 +282,7 @@
 
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 占쏙옙占� 占쏙옙占쏙옙.
+	// 占쏙옙占?占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult);
 	return;
 
@@ -345,7 +345,7 @@
 		g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiMultiShotResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx);
 	}
 
-	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙
 	wsiResult.nWsi_ResultCode = measureResut.nResultCode;
 	wsiResult.nWsi_Type = measureResut.nResultType;
 	wsiResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn;
@@ -353,7 +353,7 @@
 	memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData));
 
 
-	// 占쏙옙占� 占쏙옙占쏙옙占쏙옙 占쌩곤옙
+	// 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙
 	SReviewResult *pProcessResult = NULL;
 	if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime))
 	{
@@ -382,7 +382,7 @@
 
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 占쏙옙占� 占쏙옙占쏙옙.
+	// 占쏙옙占?占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult);
 	return;
 
@@ -465,7 +465,7 @@
 		g_pLog->DisplayMessage(_T("[ReviewProcessor]SetReviewResultData module[%d] point[%d] result[%d]"), nModuleIndex, nResultIndex, nCurResultIdx);
 	}
 
-	// 占쏙옙占쏙옙 占쏙옙占쏙옙譴占쏙옙占� 占쏙옙占쏙옙
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙譴占쏙옙占?占쏙옙占쏙옙
 	SReviewResult *pProcessResult = NULL;
 	switch(GetReviewProcessStatus())
 	{
@@ -527,7 +527,7 @@
 	}
 		LeaveCriticalSection(&m_csUserCriticalSection);
 
-		//占쏙옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占쌔뱄옙占쏙옙占쏙옙 占싣뤄옙 占쏙옙占쏙옙占쏙옙 占쏙옙타占쏙옙 占쌕쏙옙 占쏙옙占쏙옙占쏙옙표 占싫쏙옙占쏙옙 
+		//占쏙옙占쏙옙 占쏙옙占?占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占쌔뱄옙占쏙옙占쏙옙 占싣뤄옙 占쏙옙占쏙옙占쏙옙 占쏙옙타占쏙옙 占쌕쏙옙 占쏙옙占쏙옙占쏙옙표 占싫쏙옙占쏙옙 
 		// 占쏙옙호처占쏙옙 占십울옙占쏙옙 占싱곤옙 占쏙옙占쏙옙 
 		if (nCurResultIdx + 1== pReviewResult->GetSReviewResultCount())
 		{
@@ -542,7 +542,7 @@
 
 			if (bLeftGantryReviewDone&&bRightGantryReviewDone)
 			{
-				::Sleep(3000); // 占쏙옙占쏙옙甄占� 占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
+				::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
 				g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex);
 				CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 				switch (GetReviewProcessStatus())
@@ -567,13 +567,13 @@
 			}
 			else if(m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo()->GetRcpSchedulingInfo()->GetSingleGantryPath()>0)
 			{
-				//20210302 占싱깍옙 占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸곤옙占쏙옙 占쏙옙트占쏙옙占쏙옙 占싹뤄옙占� 占쏙옙占승울옙占쏙옙 
-				//占쏙옙占쏙옙占쏙옙 占쌔야듸옙占쏙옙占쏙옙 Review 占쏙옙占쏙옙 Count 체크 占싹댐옙 占쏙옙占쏙옙占쏙옙占� 占싼곤옙트占쏙옙 占쏙옙占쏙옙 200占쏙옙占쏙옙占쏙옙 占쏙옙占쌩댐옙 占쏙옙占쏙옙 占쌩삼옙
-				//占쌓뤄옙占쏙옙 占싱깍옙 占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙처占쏙옙 占싹울옙 占쏙옙占쏙옙占싹듸옙占쏙옙 占쌕뀐옙森占� CHM
+				//20210302 占싱깍옙 占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸곤옙占쏙옙 占쏙옙트占쏙옙占쏙옙 占싹뤄옙占?占쏙옙占승울옙占쏙옙 
+				//占쏙옙占쏙옙占쏙옙 占쌔야듸옙占쏙옙占쏙옙 Review 占쏙옙占쏙옙 Count 체크 占싹댐옙 占쏙옙占쏙옙占쏙옙占?占싼곤옙트占쏙옙 占쏙옙占쏙옙 200占쏙옙占쏙옙占쏙옙 占쏙옙占쌩댐옙 占쏙옙占쏙옙 占쌩삼옙
+				//占쌓뤄옙占쏙옙 占싱깍옙 占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙처占쏙옙 占싹울옙 占쏙옙占쏙옙占싹듸옙占쏙옙 占쌕뀐옙森占?CHM
 				g_pLog->DisplayMessage(_T("[ReviewProcessor]Single GantryPath Use"), nModuleIndex);
 				if (bLeftGantryReviewDone || bRightGantryReviewDone)
 				{
-					::Sleep(3000); // 占쏙옙占쏙옙甄占� 占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
+					::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
 					g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex);
 					CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 					switch (GetReviewProcessStatus())
@@ -601,7 +601,7 @@
 
 		}
 		
-		// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 占쌉곤옙, 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙...
+		// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 占쌉곤옙, 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占?占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙...
 		if(nCurResultIdx==nEndResultIdx && nCurResultIdx+1 < pReviewResult->GetSReviewResultCount())
 	    {
 
@@ -625,7 +625,7 @@
 		pReviewResult->SetEndSReviewResultIndex(nEndResultIdx);
 
 		// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙.
-		::Sleep(3000); // 占쏙옙占쏙옙甄占� 占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
+		::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
 		   if (bLeftGantryReviewDone&&bRightGantryReviewDone)
 		   {
 			
@@ -685,7 +685,7 @@
 		}
 	}
 
-	// 占쏙옙占� 占쏙옙占쏙옙.
+	// 占쏙옙占?占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, m_nReviewPlanIndex);
 	return;
 
@@ -1143,14 +1143,14 @@
 	pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), 
 		snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond());	// snap_time
 
-	// 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占�
+	// 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占?
 	CString strImageFileName = _T("");
 	if (MakeReviewImageFileName(pReviewResult)==FALSE)
 	{
 		
 	}
 
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
 	if(!UpdateMemoryReviewPlan(pReviewResult))
 		m_pRP2P->IRP2P_DisplayMessage(_T("[ReviewPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2);
 	
@@ -1178,28 +1178,30 @@
 		//	UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep);
 			//if (nSize > 0)
 			//	m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName);
-			// 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙 20190917 chm
+			// 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 20190917 chm
 			strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName);
 			nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep);
-			m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, strPath);
 
 			if (pGlassResult != NULL)
-			{
+			{				
 				pGlassResult->m_strUploadImgFileName = m_strSaveImageUploadPath;
 				//taek 210203
 				strRTMSPath.Format(_T("\\\\126.100.100.5\\Reviewimage\\%s\\%s\\%s"), pGlassResult->m_strRTMSStepID, pGlassResult->m_strGlassID, pReviewResult->strUploadImgFileName);
 				int bRet = SaveReviewImage(&uploadImage, strRTMSPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); //Taek Rtms 210126
 				if (bRet == 0)
 				{
-					m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail [%s] index[%d]"), strRTMSPath, pReviewResult->nDefectIdx);
+					m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail!!"));
 				}
-				else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); //taek 210128 占쌈듸옙 占쏙옙占쏙옙占쏙옙 占쌈시뤄옙 占싸깍옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
-			}
 
+				else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); //taek 210128 占쌈듸옙 占쏙옙占쏙옙占쏙옙 占쌈시뤄옙 占싸깍옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
+
+			}
 			if (nSize > 0)
 			{
+				
 				 int aoiindex = CDitGlassRawClient::GetInstance()->GetDefectData(pReviewResult->nDefectidx2)->m_nDefectIdx;
-				m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx, aoiindex); //taek 210128 占쌈듸옙 占쏙옙占쏙옙占쏙옙 占쌈시뤄옙 占싸깍옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
+
+				m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, pReviewResult->strUploadImgFileName, pReviewResult->nDefectIdx, aoiindex); //taek 210128 속도 문제로 임시로 로그 남기지 않음
 				//m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName);
 			}
 			else
@@ -1235,7 +1237,7 @@
 	const CRsRcpReviewInfo*  psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo();
 	if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL"));
 	
-	if(psRcpReviewInfo->m_bDefocusUse) //190819chm 占쏙옙占쏙옙커占쏙옙 占싯띰옙 占쏙옙占� 
+	if(psRcpReviewInfo->m_bDefocusUse) //190819chm 占쏙옙占쏙옙커占쏙옙 占싯띰옙 占쏙옙占?
 	{
 	  if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C)
 	  {
@@ -1276,22 +1278,21 @@
 			  }
 		  }
 
-		  if (pReviewResult->nModuleIdx == 0)
+		  if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft())
 		  {
 			  m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
-			  /* double dAverageGray = 0.0;
-			   if (CCHImageProcess::ImageAverage(pImageData, dAverageGray) == 1)
-			   {
-				   m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dAverageGray;
-			   }*/
-	  }
-		  else
+			  m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
+			  m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
+		  }
+		  else if(pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight())
 		  {
 			  m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
-			 
+			  m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
+			  m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
 		  }
 	  }
 	}
+	//#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD Start
 	else
 	{
 		double dFocusValue = 0.;
@@ -1309,15 +1310,21 @@
 			dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight());
 		}
 
-		if (pReviewResult->nModuleIdx == 0)
+		if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft())
 		{
 			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
+			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
 		}
-		else
+		else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight())
 		{
 			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
+			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
+
 		}
 	}
+	//#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD End
 	
 	
 
@@ -1342,7 +1349,7 @@
 	pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), 
 		snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond());	// snap_time
 
-	// 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占�
+	// 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占?
 	CString strImageFileName = _T("");
 	if (MakeUserImageFileName(pReviewResult)==FALSE)
 	{
@@ -1377,7 +1384,7 @@
 			//uploadImage.SaveImage(strPath, 40);  // 화占쏙옙 60% 150k
 			if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart)
 			{
-				// 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙 20190917 chm
+				// 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 20190917 chm
 				//strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName);
 				strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName);
 				nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep);
@@ -1399,7 +1406,7 @@
 	const CRsRcpReviewInfo*  psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo();
 	if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL"));
 
-	if(psRcpReviewInfo->m_bDefocusUse) //190819chm 占쏙옙占쏙옙커占쏙옙 占싯띰옙 占쏙옙占� 
+	if(psRcpReviewInfo->m_bDefocusUse) //190819chm 占쏙옙占쏙옙커占쏙옙 占싯띰옙 占쏙옙占?
 	{
 		if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C)
 		{
@@ -1422,9 +1429,23 @@
 			if (imageConvert.GetImageExist())
 			{
 				dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight());
+
+				if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft())
+				{
+					m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+					m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
+					m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
+				}
+				else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight())
+				{
+					m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+					m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
+					m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
+
+				}
+
 			}
 		
-			
 			// count defocus
 			CGlassResult* pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 			if (pGlassResult)
@@ -1444,6 +1465,39 @@
 		}
 	}
 
+	//#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 ADD Start
+	else
+	{
+		double dFocusValue = 0.;
+		CCHImageData imageConvert;
+		if (pImageData->GetChannels() != 1)
+		{
+			CCHImageProcess::ImageConvert(pImageData, &imageConvert, ConvertTypeRGB2Gray);
+		}
+		else
+		{
+			pImageData->CopyImageTo(&imageConvert);
+		}
+		if (imageConvert.GetImageExist())
+		{
+			dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight());
+		}
+
+		if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft())
+		{
+			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE);
+			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue);
+		}
+		else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight())
+		{
+			m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue;
+			m_pRP2P->IRP2P_SetFirstReviewRight(FALSE);
+			m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue);
+
+		}
+	}
+	//#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 ADD End
 
 	return ReviewResult_Process_Complete;
 }
@@ -1484,7 +1538,7 @@
 	pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), 
 		snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond());	// snap_time
 
-	// 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占�
+	// 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占?
 	CString strImageFileName = _T("");
 	if (MakeReflowImageFileName(pReviewResult)==FALSE)
 	{
@@ -1501,7 +1555,7 @@
 
 
 	reflowParam reParam; //Reflow 占쏙옙占쏙옙 占쏙옙占쏙옙 
-	reflowResult reResult;//Reflow 占쏙옙占� 占쏙옙占쏙옙
+	reflowResult reResult;//Reflow 占쏙옙占?占쏙옙占쏙옙
 
 	//////////////////////////////////////////////////////////////////////////////////////////////
 	BOOL btFlag =0;
@@ -1656,7 +1710,7 @@
 			//uploadImage.SaveImage(strPath, 40);  // 화占쏙옙 60% 150k
 			if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart)
 			{
-				// 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙 20190917 chm
+				// 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 20190917 chm
 				//strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName);
 				strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName);
 				nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep);
@@ -1909,7 +1963,7 @@
 
 	if(GetReviewProcessStatus() == ReviewProcessStatus_ReviewStart)
 	{
-		// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占� '*' 占쏙옙占� 占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
+		// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
 		if (pReviewResult->strDefectCode.Compare(_T("***")) == 0)
 			strDefectCodeTemp = _T("DC");	
 		else 
@@ -2000,7 +2054,7 @@
 		snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond());	// snap_time
 
 
-	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占� 占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占�)
+	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占?占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占?
 	pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp");
 
 	strFileName += _T(".jpg");
@@ -2061,7 +2115,7 @@
 	
 	if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart)
 	{
-		// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占� '*' 占쏙옙占� 占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
+		// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
 		if (pReviewResult->strDefectCode.Compare(_T("***")) == 0)
 			strDefectCodeTemp = _T("DC");	
 		else 
@@ -2155,7 +2209,7 @@
 	// 		strFileName += pReviewResult->strSnapTime;
 	// 	}
 
-	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占� 占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占�)
+	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占?占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占?
 	pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp");
 
 	strFileName += _T(".jpg");
@@ -2238,7 +2292,7 @@
 
 	FindAoiDefectImagePath(strGlassID, nOpticType, nPosX, nPosY, strAoiDarkPath, strAoiBrightPath);
 
-	// Dark, Bright 占쏙옙占� 찾占쏙옙 占쏙옙占쏙옙 占쌍쇽옙처占쏙옙 [2017.7.1 bhs]
+	// Dark, Bright 占쏙옙占?찾占쏙옙 占쏙옙占쏙옙 占쌍쇽옙처占쏙옙 [2017.7.1 bhs]
 	// Dark image
 	//if(nOpticType & DEFECT_OPTIC_DARK)
 	{
@@ -2283,7 +2337,7 @@
 	CFileFind finder;
 	CString strSearchPath = _T("");
 
-	// Dark, Bright 占쏙옙占� 찾占쏙옙 占쏙옙占쏙옙 占쌍쇽옙처占쏙옙 [2017.7.1 bhs]
+	// Dark, Bright 占쏙옙占?찾占쏙옙 占쏙옙占쏙옙 占쌍쇽옙처占쏙옙 [2017.7.1 bhs]
 	//if (nOpticType & DEFECT_OPTIC_DARK)
 	{
 		// Dark field
@@ -2357,7 +2411,7 @@
 			processTimer.End();
 		}
 
-		// 4-3. 占쏙옙占쏙옙占쏙옙占� 占쏙옙占�
+		// 4-3. 占쏙옙占쏙옙占쏙옙占?占쏙옙占?
 		double dAverageGray = 0.0;
 		if (CCHImageProcess::ImageAverage(&bandImage, dAverageGray)==1)
 		{
@@ -2464,7 +2518,7 @@
 	double dRulerGab = 20.0 / m_dReviewImageScale;
 	double dScaleResolution = pReviewResult->dMeasureResolution / m_dReviewImageScale;
 
-	//DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 占쏙옙占� X
+	//DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 占쏙옙占?X
 
 	// draw text string
 	DrawDefectInfo(&memDC, findResult, pReviewResult);
@@ -2580,7 +2634,7 @@
 	int nTotalWidth		= int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5);
 	int nTotalHeight	= int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5);
 
-	// Dark, Bright 占싱뱄옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌕듸옙占쏙옙 占쏙옙占쏙옙, Dark 占쏙옙, Bright 占싣뤄옙 - 占쏙옙占쏙옙占� 占쏙옙청[2017.6.30 bhs]
+	// Dark, Bright 占싱뱄옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌕듸옙占쏙옙 占쏙옙占쏙옙, Dark 占쏙옙, Bright 占싣뤄옙 - 占쏙옙占쏙옙占?占쏙옙청[2017.6.30 bhs]
 	//int nX = nTotalWidth - nWidth;
 	//int nY = nTotalHeight - (nHeight * 2);
 
@@ -2592,7 +2646,7 @@
 	//pAoiDark1->ShowImage(pDC->m_hDC,	nTotalWidth - nWidth,	nTotalHei4ght-nHeight,	pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0);
 	//pAoiBright1->ShowImage(pDC->m_hDC,	nTotalWidth - nWidth,	nTotalHeight-nHeight,	pAoiBright1->GetWidth(), pAoiBright1->GetHeight(), 0, 0);
 
-	// 占싯삼옙 占싱뱄옙占쏙옙 占쌩앙울옙 화占쏙옙표 표占쏙옙 - 占쏙옙占쏙옙占� 占쏙옙청 [2017.6.30 bhs]
+	// 占싯삼옙 占싱뱄옙占쏙옙 占쌩앙울옙 화占쏙옙표 표占쏙옙 - 占쏙옙占쏙옙占?占쏙옙청 [2017.6.30 bhs]
 	CFont Font;
 	VERIFY(Font.CreateFont(
 		50,                        // nHeight
@@ -2827,7 +2881,7 @@
 		}
 
 		//taek 210127
-		//占쏙옙占쏙옙占쏙옙占� 占쏙옙표占쏙옙 y 占쏙옙 *-1占쏙옙 占쏙옙占쏙옙
+		//占쏙옙占쏙옙占쏙옙占?占쏙옙표占쏙옙 y 占쏙옙 *-1占쏙옙 占쏙옙占쏙옙
 		//占쏙옙占쏙옙 ID, 占싯삼옙 카占쌨띰옙 占쏙옙占쏙옙, 占싯삼옙 Camera 占쏙옙占쏙옙 : (? ) 캠 ?, Cell ID,	Review Cam 占쏙옙占쏙옙 : Gantry 占쏙옙占쏙옙,	占쏙옙占쏙옙 Size,	占쏙옙占쏙옙 Zone 占쏙옙占쏙옙,	Stak Flag, CODE 占쏙옙占쏙옙, 占쏙옙표 占쏙옙占쏙옙
 		
 		// PPID
@@ -3043,7 +3097,7 @@
 
 	if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart)
 	{
-		// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占� '*' 占쏙옙占� 占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
+		// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
 		if (pReviewResult->strDefectCode.Compare(_T("***")) == 0)
 			strDefectCodeTemp = _T("DC");	
 		else 
@@ -3120,7 +3174,7 @@
 	// 		strFileName += pReviewResult->strSnapTime;
 	// 	}
 
-	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占� 占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占�)
+	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占?占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占?
 	pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp");
 
 	strFileName += _T(".jpg");
@@ -3174,7 +3228,7 @@
 		g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx);
 	}
 
-	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙
 	wsiResult.nWsi_ResultCode		= measureResut.nResultCode;
 	wsiResult.dWsi_DamDistance		= measureResut.dDamDistance;
 
@@ -3184,7 +3238,7 @@
 	}
 	//memcpy(wsiResult.nWsi_pReflowResultData, measureResut.pReflowResultData, sizeof(wsiResult.nWsi_pReflowResultData));
 	
-	// 占쏙옙占� 占쏙옙占쏙옙占쏙옙 占쌩곤옙
+	// 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙
 	SReviewResult *pProcessResult = NULL;
 	if (pGlassResult->SetWsiReflowResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime))
 	{
@@ -3212,7 +3266,7 @@
 
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 占쏙옙占� 占쏙옙占쏙옙.
+	// 占쏙옙占?占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, 5);
 	return;
 
@@ -3238,7 +3292,7 @@
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY;
 
 		}
-		else if(nCornercut == RPCRightTop)//占쏙옙占�
+		else if(nCornercut == RPCRightTop)//占쏙옙占?
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY;
@@ -3256,7 +3310,7 @@
 		}
 	}
 
-	else if(nOriginDirection==RPORightTop){//占쏙옙占쏙옙占쏙옙占쏙옙占�
+	else if(nOriginDirection==RPORightTop){//占쏙옙占쏙옙占쏙옙占쏙옙占?
 
 		if(nCornercut == RPCLeftTop)//占승삼옙 
 		{ 
@@ -3264,7 +3318,7 @@
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY;
 
 		}
-		else if(nCornercut == RPCRightTop)//占쏙옙占�
+		else if(nCornercut == RPCRightTop)//占쏙옙占?
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY;
@@ -3292,7 +3346,7 @@
 			nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY;
 		}
-		else if(nCornercut == RPCRightTop)//占쏙옙占�
+		else if(nCornercut == RPCRightTop)//占쏙옙占?
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY;
@@ -3321,7 +3375,7 @@
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY;
 
 		}
-		else if(nCornercut == RPCRightTop)//占쏙옙占�
+		else if(nCornercut == RPCRightTop)//占쏙옙占?
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY;
@@ -3357,7 +3411,7 @@
 	CString strFileName = _T("");
 	CString strDefectCodeTemp = _T("");
 
-	// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占� '*' 占쏙옙占� 占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
+	// [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙)
 	if (pReviewResult->strDefectCode.Compare(_T("***")) == 0)
 		strDefectCodeTemp = _T("DC");	
 	else 
@@ -3421,7 +3475,7 @@
 {
 	if(pReviewResult == NULL)	return FALSE;
 
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawCleint = CDitGlassRawClient::GetInstance();
 	if(pDitGlassRawCleint->isConnect() == TRUE)
 	{
@@ -3442,10 +3496,10 @@
 		strcpy(pSharedGlassData->m_strAlignFirst, m_strReviewFirst.MakeLower());
 		strcpy(pSharedGlassData->m_strAlignSecond, m_strReviewSecned.MakeLower());
 
-		pSharedDefectReview->m_nPlanType =  ditRaw::RPT_Review;	//0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(占쌤븝옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占�)			
+		pSharedDefectReview->m_nPlanType =  ditRaw::RPT_Review;	//0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(占쌤븝옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占?			
 		pSharedDefectReview->m_nResultCode = 1;  //0:None, 1:Success
 		pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; 
-		//pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS 占쏙옙占쌔울옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占� 占싣니몌옙 占쏙옙占쏙옙占쏙옙 占싹댐옙 占심뤄옙 taek 210128
+		//pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS 占쏙옙占쌔울옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占?占싣니몌옙 占쏙옙占쏙옙占쏙옙 占싹댐옙 占심뤄옙 taek 210128
 		pSharedDefectReview->m_nModuleIndex = pReviewResult->nModuleIdx;
 		pSharedDefectReview->m_nMagnificIndex = 20;
 		pSharedDefectReview->m_fManification =pReviewResult->dMagnification;
@@ -3459,7 +3513,7 @@
 
 BOOL CReviewProcessor_CPJT::UpdateMemoryUserPlan( SReviewResult* pReviewResult )
 {
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
 	CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
 	if(pDitRawClient->isConnect() == TRUE)
 	{
@@ -3476,7 +3530,7 @@
 		
 		strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName);
 	
-		pSharedDefectReview->m_nPlanType = ditRaw::RPT_User;	//0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(占쌤븝옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占�)			
+		pSharedDefectReview->m_nPlanType = ditRaw::RPT_User;	//0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(占쌤븝옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占?			
 		pSharedDefectReview->m_nResultCode = 1;  //0:None, 1:Success
 		pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; 
 		pSharedDefect->m_nShotIdx = pReviewResult->nResultIdx;
@@ -3495,7 +3549,7 @@
 BOOL CReviewProcessor_CPJT::UpdateMemoryReflowPlan( SReviewResult* pReviewResult )
 {
 	if(pReviewResult == NULL)	return FALSE;
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
 	//int nEqpID = m_pSP2P->ISP2P_System_GetSystemInfo()->m_nMachineType;
 	CString strCellID = _T("");
@@ -3517,7 +3571,7 @@
 				nReflowjuge=1;
 			}
 
-			// 占쏙옙占쏙옙占� 占쏙옙청占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙. 0,1 Position占쏙옙 Pass
+			// 占쏙옙占쏙옙占?占쏙옙청占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙. 0,1 Position占쏙옙 Pass
 			else if(nReflowjuge == 3 || nReflowjuge == 2)
 			{
 				m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowResult] Reflow Judge Is No OverFlow %d"),nReflowjuge);
@@ -3582,7 +3636,7 @@
 {
 	if(pReviewResult == NULL)	return FALSE;
 
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance();
 
 	if(pDitGlassRawClient->isConnect() == TRUE)
@@ -3624,7 +3678,7 @@
 BOOL CReviewProcessor_CPJT::UpdateMemoryWsiReflowPlan( SReviewResult* pReviewResult )
 {
 	if(pReviewResult == NULL)	return FALSE;
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
 	
 
@@ -3638,12 +3692,12 @@
 
 	/*
 	pPacket->GetInt(0)			= Index
-	pPacket->GetInt(1)			= Wsi 占쏙옙占쏙옙 占쏙옙占�
-	pPacket->GetInt(2)			= A占쏙옙 占쏙옙占쏙옙 占쏙옙占� (1 占쏙옙占쏙옙 0 占쏙옙占쏙옙)
-	pPacket->GetInt(3)          = B占쏙옙 占쏙옙占쏙옙 占쏙옙占�
-	pPacket->GetInt(4)          = C占쏙옙 占쏙옙占쏙옙 占쏙옙占�
-	pPacket->GetInt(5)          = D占쏙옙 占쏙옙占쏙옙 占쏙옙占�
-	pPacket->GetInt(6)          = Review占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占� PointIndex
+	pPacket->GetInt(1)			= Wsi 占쏙옙占쏙옙 占쏙옙占?
+	pPacket->GetInt(2)			= A占쏙옙 占쏙옙占쏙옙 占쏙옙占?(1 占쏙옙占쏙옙 0 占쏙옙占쏙옙)
+	pPacket->GetInt(3)          = B占쏙옙 占쏙옙占쏙옙 占쏙옙占?
+	pPacket->GetInt(4)          = C占쏙옙 占쏙옙占쏙옙 占쏙옙占?
+	pPacket->GetInt(5)          = D占쏙옙 占쏙옙占쏙옙 占쏙옙占?
+	pPacket->GetInt(6)          = Review占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占?PointIndex
 	pPacket->GetDouble(0)       = 占쏙에占쏙옙 Monomo占쏙옙占쏙옙占쏙옙 占신몌옙
 	*/
 	
@@ -3655,7 +3709,7 @@
 	
 	nWsiReflowJudge  = pReviewResult->nWsi_ResultCode;
 
-	//nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1占쏙옙 占신곤옙횡占� 
+	//nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1占쏙옙 占신곤옙횡占?
 	nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[1];//B
 	nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[2];//C
 	//nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[3];//D
@@ -3715,7 +3769,7 @@
 {
 	if(pReviewResult == NULL)	return FALSE;
 
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance();
 
 	if(pDitGlassRawClient->isConnect() == TRUE)
@@ -3750,7 +3804,7 @@
 {
 	if (pReviewResult == NULL)	return FALSE;
 
-	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
+	//占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance();
 
 	if (pDitGlassRawClient->isConnect() == TRUE)

--
Gitblit v1.9.3