From 9cbd9e554f9956b3b945b51602f1d4a3fa0353e1 Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 목, 08 7월 2021 17:24:24 +0900
Subject: [PATCH] Ongoing60 #3486 CF AOI Review Review History 프로그램 테스트 및 적용

---
 ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp |  345 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 178 insertions(+), 167 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
index 52ad15b..af864fc 100644
--- a/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -88,7 +88,7 @@
 	int nEndResultIdx	= pReviewResult->GetEndSReviewResultIndex();
 						
 	
-	// 인덱스가 현재 마지막 인덱스 보다 클시..
+	// 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙 占쏙옙占쏙옙 클占쏙옙..
 	if (nCurResultIdx > nEndResultIdx)  
 	{
 		LeaveCriticalSection(&m_csUserCriticalSection);
@@ -97,7 +97,7 @@
 	}
 
 
-	// 현재 결과데이터 저장
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙
 
 	wsiResult.nWsi_ResultIndex = measureResut.nResultIndex;
 	wsiResult.nResultCode = measureResut.nResultCode;
@@ -138,8 +138,8 @@
 // 		g_pLog->DisplayMessage(_T("[ReviewProcessor]JugementR [%d] JugementG [%d] JugementB [%d]"), wsiResult.nJugementR, wsiResult.nJugementG, wsiResult.nJugementB);
 // 		g_pLog->DisplayMessage(_T("[ReviewProcessor]RZoneHeight [%.03lf] GZoneHeight [%.03lf] BZoneHeight [%.03lf]"), wsiResult.dRZoneHeight, wsiResult.dGZoneHeight, wsiResult.dBZoneHeight);
 
-// 		wsiResult.추가 하세요= measureResut.nMultiShot;
-// 		wsiResult.추가 하세요= measureResut.nCurrentShotNumber;
+// 		wsiResult.占쌩곤옙 占싹쇽옙占쏙옙= measureResut.nMultiShot;
+// 		wsiResult.占쌩곤옙 占싹쇽옙占쏙옙= measureResut.nCurrentShotNumber;
 		break;
 	case 3: //BANK
 		wsiResult.dRZoneHeight = measureResut.dRZoneHeight;
@@ -147,14 +147,14 @@
 		wsiResult.dBZoneHeight = measureResut.dBZoneHeight;
 		wsiResult.dDefectHeight = measureResut.dDefectHeight;
 		wsiResult.nWsi_DefectType = measureResut.nDefectType;
-// 		wsiResult.추가 하세요= measureResut.nMultiShot;
-// 		wsiResult.추가 하세요= measureResut.nCurrentShotNumber;
+// 		wsiResult.占쌩곤옙 占싹쇽옙占쏙옙= measureResut.nMultiShot;
+// 		wsiResult.占쌩곤옙 占싹쇽옙占쏙옙= measureResut.nCurrentShotNumber;
 		break;
 	case 4: //CS
 		wsiResult.dCSHeight = measureResut.dCSHeight;
 		wsiResult.dDefectHeight = measureResut.dDefectHeight;
 		wsiResult.nWsi_DefectType = measureResut.nDefectType;
-// 		wsiResult.추가 하세요= measureResut.nMultiShot;
+// 		wsiResult.占쌩곤옙 占싹쇽옙占쏙옙= measureResut.nMultiShot;
 		break;
 	}
 
@@ -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))
 	{
@@ -173,10 +173,10 @@
 		pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx);
 	}
 
-	// 저장 성공시, 리뷰 프로세서에 포인터 전달
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙, 占쏙옙占쏙옙 占쏙옙占싸쇽옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 	if (pProcessResult)
 	{
-		// 처리 쓰레드 수행
+		// 처占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 		if (AddReviewProcessData(pProcessResult)==1)
 		{
 			g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx);
@@ -192,7 +192,7 @@
 	
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 결과 갱신.
+	// 占쏙옙占� 占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult);
 	return;
 
@@ -238,7 +238,7 @@
 	int nEndResultIdx	= pReviewResult->GetEndSReviewResultIndex();
 
 
-	// 인덱스가 현재 마지막 인덱스 보다 클시..
+	// 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙 占쏙옙占쏙옙 클占쏙옙..
 	if (nCurResultIdx > nEndResultIdx)  
 	{
 		LeaveCriticalSection(&m_csUserCriticalSection);
@@ -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))
 	{
@@ -263,10 +263,10 @@
 		pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx);
 	}
 
-	// 저장 성공시, 리뷰 프로세서에 포인터 전달
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙, 占쏙옙占쏙옙 占쏙옙占싸쇽옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 	if (pProcessResult)
 	{
-		// 처리 쓰레드 수행
+		// 처占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 		if (AddReviewProcessData(pProcessResult)==1)
 		{
 			g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); 
@@ -282,7 +282,7 @@
 
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 결과 갱신.
+	// 占쏙옙占� 占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult);
 	return;
 
@@ -337,7 +337,7 @@
 	int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex();
 
 
-	// 인덱스가 현재 마지막 인덱스 보다 클시..
+	// 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙 占쏙옙占쏙옙 클占쏙옙..
 	if (nCurResultIdx > nEndResultIdx)
 	{
 		LeaveCriticalSection(&m_csUserCriticalSection);
@@ -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))
 	{
@@ -363,10 +363,10 @@
 		pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx);
 	}
 
-	// 저장 성공시, 리뷰 프로세서에 포인터 전달
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙, 占쏙옙占쏙옙 占쏙옙占싸쇽옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 	if (pProcessResult)
 	{
-		// 처리 쓰레드 수행
+		// 처占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 		if (AddReviewProcessData(pProcessResult) == 1)
 		{
 			g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); 
@@ -382,7 +382,7 @@
 
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 결과 갱신.
+	// 占쏙옙占� 占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult);
 	return;
 
@@ -457,7 +457,7 @@
 	int nStartResultIdx	= pReviewResult->GetStartSReviewResultIndex();
 	int nEndResultIdx	= pReviewResult->GetEndSReviewResultIndex();
 	
-	// 인덱스가 현재 마지막 인덱스 보다 클시..
+	// 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙 占쏙옙占쏙옙 클占쏙옙..
 	if (nCurResultIdx > nEndResultIdx)  
 	{
 		LeaveCriticalSection(&m_csUserCriticalSection);
@@ -465,7 +465,7 @@
 		g_pLog->DisplayMessage(_T("[ReviewProcessor]SetReviewResultData module[%d] point[%d] result[%d]"), nModuleIndex, nResultIndex, nCurResultIdx);
 	}
 
-	// 현재 결과이미지 저장
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙譴占쏙옙占� 占쏙옙占쏙옙
 	SReviewResult *pProcessResult = NULL;
 	switch(GetReviewProcessStatus())
 	{
@@ -509,10 +509,10 @@
 		break;
 	}
 
-	// 저장 성공시, 리뷰 프로세서에 포인터 전달
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙, 占쏙옙占쏙옙 占쏙옙占싸쇽옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 	if (pProcessResult)
 	{
-		// 처리 쓰레드 수행
+		// 처占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 		if (AddReviewProcessData(pProcessResult)==1)
 		{
 			g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); 
@@ -527,8 +527,8 @@
 	}
 		LeaveCriticalSection(&m_csUserCriticalSection);
 
-		//만약 어느 한쪽이포인트 진행을 다해버리면 아래 구문을 안타서 다시 모터좌표 안쏴줌 
-		// 신호처리 필요함 이거 ㄱㄱ 
+		//占쏙옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占쌔뱄옙占쏙옙占쏙옙 占싣뤄옙 占쏙옙占쏙옙占쏙옙 占쏙옙타占쏙옙 占쌕쏙옙 占쏙옙占쏙옙占쏙옙표 占싫쏙옙占쏙옙 
+		// 占쏙옙호처占쏙옙 占십울옙占쏙옙 占싱곤옙 占쏙옙占쏙옙 
 		if (nCurResultIdx + 1== pReviewResult->GetSReviewResultCount())
 		{
 			if (nModuleIndex == 0)
@@ -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())
 	    {
 
@@ -624,8 +624,8 @@
 		pReviewResult->SetStartSReviewResultIndex(nStartResultIdx);
 		pReviewResult->SetEndSReviewResultIndex(nEndResultIdx);
 
-		// 나머지 포인트 리뷰 수행하자.
-		::Sleep(3000); // 딜레이는 필수임. 없으면 동작 안함.
+		// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙.
+		::Sleep(3000); // 占쏙옙占쏙옙甄占� 占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙.
 		   if (bLeftGantryReviewDone&&bRightGantryReviewDone)
 		   {
 			
@@ -685,7 +685,7 @@
 		}
 	}
 
-	// 결과 갱신.
+	// 占쏙옙占� 占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, m_nReviewPlanIndex);
 	return;
 
@@ -729,7 +729,7 @@
 {
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -737,7 +737,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckReviewComplete())
 	{
 		// check motor ready!
@@ -763,7 +763,7 @@
 {
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -771,7 +771,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckUserComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("User Last Point Complete! "));
@@ -796,7 +796,7 @@
 {
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PLC ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PLC ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -804,7 +804,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckReflowComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("Reflow Last Point Complete! "));
@@ -829,7 +829,7 @@
 {
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -837,7 +837,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckWsiComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Last Point Complete! "));
@@ -863,7 +863,7 @@
 	g_pLog->DisplayMessage(_T("PostProcessMeasureResult[%d]"),nThreadIdx);
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -871,7 +871,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckMeasureComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("Measure Last Point Complete! "));
@@ -900,7 +900,7 @@
 {
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -908,7 +908,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckWsiReflowComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Reflow Last Point Complete! "));
@@ -932,7 +932,7 @@
 {
 	if (m_pRP2P==NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult==NULL || pSequenceProcessor==NULL) 
@@ -940,7 +940,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckWsiUserComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Last Point Complete! "));
@@ -965,7 +965,7 @@
 {
 	if (m_pRP2P == NULL) return 0;
 
-	// 마지막 포인트인지 확인 후 PCControl ReviewEnd 전송
+	// 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 확占쏙옙 占쏙옙 PCControl ReviewEnd 占쏙옙占쏙옙
 	CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult();
 	CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor();
 	if (pGlassResult == NULL || pSequenceProcessor == NULL)
@@ -973,7 +973,7 @@
 		return 1;
 	}
 
-	// 조건확인
+	// 占쏙옙占쏙옙확占쏙옙
 	if (pGlassResult->CheckWsiMultiShotComplete())
 	{
 		m_pRP2P->IRP2P_DisplayMessage(_T("WsiMultiShot Last Point Complete! "));
@@ -1138,23 +1138,23 @@
 		return ReviewResult_Process_Fail;
 	}
 	
-	// Snap 시간 저장.
+	// Snap 占시곤옙 占쏙옙占쏙옙.
 	CTime snapTime = CTime::GetCurrentTime();
 	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);
 	
-	// 로컬 이미지 저장 파일 이름
+	// 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占싱몌옙
 	pReviewResult->strImgFileName = m_strSaveImageBasePath + _T("\\") +pReviewResult->strImgFileName;
 	pReviewResult->nOpticType = 1;
 
@@ -1178,7 +1178,7 @@
 		//	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);
@@ -1193,13 +1193,13 @@
 				{
 					m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail [%s] index[%d]"), strRTMSPath, pReviewResult->nDefectIdx);
 				}
-				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, strRTMSPath, 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 +1235,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)
 	  {
@@ -1337,12 +1337,12 @@
 		return ReviewResult_Process_Fail;
 	}
 
-	// Snap 시간 저장.
+	// Snap 占시곤옙 占쏙옙占쏙옙.
 	CTime snapTime = CTime::GetCurrentTime();
 	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)
 	{
@@ -1355,7 +1355,7 @@
 		m_pRP2P->IRP2P_DisplayMessage(_T("[UserPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2);
 
 
-	//// 로컬 이미지 저장 파일 이름
+	//// 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占싱몌옙
 	//strImageFileName.Format(_T("ModuleIdx[%d]_PointIdx[%d]_Zoom[%d]"), pReviewResult->nModuleIdx, pReviewResult->nResultIdx, pReviewResult->nZoomIdx);
 	//pReviewResult->strImgFileName = strImageFileName;
 
@@ -1374,10 +1374,10 @@
 			UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep);
 			m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte"), nSize);
 
-			//uploadImage.SaveImage(strPath, 40);  // 화질 60% 150k
+			//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 +1399,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)
 		{
@@ -1457,7 +1457,7 @@
 
 	int nTestMode = FALSE;
 	
-	//시뮬 돌릴려는 이미지 파일 선택 20190827 chm
+	//占시뱄옙 占쏙옙占쏙옙占쏙옙占쏙옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 20190827 chm
 	if(nTestMode){
 		Sleep(500);
 		CString strPathName;
@@ -1479,12 +1479,12 @@
 		return ReviewResult_Process_Fail;
 	}
 
-	// Snap 시간 저장.
+	// Snap 占시곤옙 占쏙옙占쏙옙.
 	CTime snapTime = CTime::GetCurrentTime();
 	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)
 	{
@@ -1500,8 +1500,8 @@
 	}
 
 
-	reflowParam reParam; //Reflow 연산 정보 
-	reflowResult reResult;//Reflow 결과 정보
+	reflowParam reParam; //Reflow 占쏙옙占쏙옙 占쏙옙占쏙옙 
+	reflowResult reResult;//Reflow 占쏙옙占� 占쏙옙占쏙옙
 
 	//////////////////////////////////////////////////////////////////////////////////////////////
 	BOOL btFlag =0;
@@ -1513,10 +1513,10 @@
 	CCHImageData tempImage;
 	tempImageOrigin.CopyImageFrom(pImageData);
 
-	if(pReviewResult->nReflow_Side==7) // 바텀 연산
+	if(pReviewResult->nReflow_Side==7) // 占쏙옙占쏙옙 占쏙옙占쏙옙
 	{
 		btFlag=1;
-		CCHImageProcess::ImageRotate(pImageData,&tempImage,135);//바텀 이미지를 Right 회전 시켜 Right 연산 실행 
+		CCHImageProcess::ImageRotate(pImageData,&tempImage,135);//占쏙옙占쏙옙 占싱뱄옙占쏙옙占쏙옙 Right 회占쏙옙 占쏙옙占쏙옙 Right 占쏙옙占쏙옙 占쏙옙占쏙옙 
 		pImageData = &tempImage;
 		//reParam.nImageWidth = 2048;
 		//reParam.nImageHeight = 2432;
@@ -1626,9 +1626,9 @@
 
 	CCHImageData tmepData2;
 	if(btFlag==1){
-		CCHImageProcess::ImageRotate(pImageData,&tmepData2,135);//Right 연산후 다시 이미지 돌리기
+		CCHImageProcess::ImageRotate(pImageData,&tmepData2,135);//Right 占쏙옙占쏙옙占쏙옙 占쌕쏙옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙占쏙옙
 		pImageData= &tmepData2;
-		//pImageData->SaveImage(_T("D:\\Testafter.bmp"));//Test 를 위한 bmp 저장
+		//pImageData->SaveImage(_T("D:\\Testafter.bmp"));//Test 占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙
 	}
 
 
@@ -1653,17 +1653,17 @@
 			UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep);
 			m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte"), nSize);
 
-			//uploadImage.SaveImage(strPath, 40);  // 화질 60% 150k
+			//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);
 
 				m_pRP2P->IRP2P_DisplayMessage(_T("Upload Reflow Image Save Success! Size: %d byte"), nSize);
 				
-				//시뮬돌리고 이미지 자동으로 열어줌 20190927chm
+				//占시뮬듸옙占쏙옙占쏙옙 占싱뱄옙占쏙옙 占쌘듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 20190927chm
 				if(nTestMode)
 				{
 					CString csParam;
@@ -1683,7 +1683,7 @@
 		m_pRP2P->IRP2P_DisplayMessage(_T("Upload Reflow Image Save Fail![%s]"), pReviewResult->strUploadImgFileName);
 	}
 
-	//공유메모리 업데이트
+	//占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙占쏙옙트
 	if(!UpdateMemoryReflowPlan(pReviewResult))
 		m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2);
 
@@ -1896,7 +1896,7 @@
 
 
 
-//파일명 181227 cmark
+//占쏙옙占싹몌옙 181227 cmark
 BOOL CReviewProcessor_CPJT::MakeReviewImageFileName(SReviewResult* pReviewResult)
 {
 	if (m_pRP2P==NULL || pReviewResult==NULL) return FALSE;
@@ -1909,7 +1909,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,23 +2000,24 @@
 		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");
 	pReviewResult->strUploadImgFileName = strFileName;
 	pReviewResult->strImgFileName = strFileName;
+	pReviewResult->strImgFilePath = GetReviewUploadImagePath();
 	return TRUE;
 }
 
 
 int	CReviewProcessor_CPJT::ProcessWSIReflow(int nThreadIdx, SReviewResult* pReviewResult)
 {
-	// [2016:11:15]-[WEZASW] : 점검 필요
+	// [2016:11:15]-[WEZASW] : 占쏙옙占쏙옙 占십울옙
 	if(!UpdateMemoryWsiReflowPlan(pReviewResult))
 		m_pRP2P->IRP2P_DisplayMessage(_T("[WsiReflowPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2);
 
-	// wsi용 return 값으로 수정 [6/20/2017 bhs]
+	// wsi占쏙옙 return 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 [6/20/2017 bhs]
 	return WsiResultSuccess;
 }
 
@@ -2060,7 +2061,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 
@@ -2154,12 +2155,13 @@
 	// 		strFileName += pReviewResult->strSnapTime;
 	// 	}
 
-	// [2017:4:10]-[WEZASW] : 고객사 요청에 의한 bmp 파일 추가 저장. (임시사용)
+	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占� 占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占�)
 	pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp");
 
 	strFileName += _T(".jpg");
 	pReviewResult->strUploadImgFileName = strFileName;
 	pReviewResult->strImgFileName = strFileName;
+	pReviewResult->strImgFilePath = GetReviewUploadImagePath();
 	return TRUE;
 }
 
@@ -2230,13 +2232,13 @@
 
 void CReviewProcessor_CPJT::LoadAoiImage(const CString& strGlassID, int nOpticType, int nPosX, int nPosY, CCHImageData* pAoiDark, CCHImageData *pAoiBright)
 {
-	// 3. 검사 결함 이미지 찾기
+	// 3. 占싯삼옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 찾占쏙옙
 	CString strAoiDarkPath = _T("");
 	CString strAoiBrightPath = _T("");
 
 	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)
 	{
@@ -2281,7 +2283,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
@@ -2355,7 +2357,7 @@
 			processTimer.End();
 		}
 
-		// 4-3. 리뷰평균 밝기
+		// 4-3. 占쏙옙占쏙옙占쏙옙占� 占쏙옙占�
 		double dAverageGray = 0.0;
 		if (CCHImageProcess::ImageAverage(&bandImage, dAverageGray)==1)
 		{
@@ -2392,14 +2394,14 @@
 	CCHImageData pReviewCam;
 	CCHImageData tempImage1;
 	
-	// 설정값 이미지 회전
+	// 占쏙옙占쏙옙占쏙옙 占싱뱄옙占쏙옙 회占쏙옙
 	if (m_nImageRotate > 0)
 	{
 		tempImage1.CopyImageFrom(pReviewCamSource);
 		CCHImageProcess::ImageRotate(pReviewCamSource, &tempImage1, (90.0*m_nImageRotate));
 	}
 
-	// 설정값 이미지 반전
+	// 占쏙옙占쏙옙占쏙옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙
 	if (m_nimageFlip > 0)
 	{
 		if(m_nImageRotate > 0)
@@ -2436,7 +2438,7 @@
 
 	// set total size * scale
 	int nTotalWidth		= int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5);
-	// 20170817 smok Dark, Bright 이미지가 리뷰 이미지 아래에 붙도록 수정
+	// 20170817 smok Dark, Bright 占싱뱄옙占쏙옙占쏙옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싣뤄옙占쏙옙 占쌕듸옙占쏙옙 占쏙옙占쏙옙
 	int nTotalHeight	= int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5 + max(pAoiDark2.GetHeight(), pAoiBright2.GetHeight()));
 	int nTotalHeight2	= int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5);
 
@@ -2462,14 +2464,14 @@
 	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);
 	
 	//DrawAoiImage(&memDC, &pAoiDark2, &pAoiBright2, &pAoiDark2, &pAoiBright2, nAoiWidth, nAoiHeight);
 
-	// draw line 히팅 검증용
+	// draw line 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
 	//DrawCenterLine(&memDC, nTotalWidth, nTotalHeight);
    // DrawCenterRect(&memDC, nTotalWidth, nTotalHeight, 100, 100, pReviewResult->dMeasureResolution);
 
@@ -2497,7 +2499,7 @@
 
 	nWidthDark = nHeightDark = nWidthBright = nHeightBright = 0;
 
-	// 20170817 smok Dark, Bright 이미지가 리뷰 이미지 아래에 붙도록 수정
+	// 20170817 smok Dark, Bright 占싱뱄옙占쏙옙占쏙옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싣뤄옙占쏙옙 占쌕듸옙占쏙옙 占쏙옙占쏙옙
 	// dark
 	CCHImageData subImage;
 	if(pAoiDark!=NULL && pAoiDark->GetImageExist())
@@ -2578,11 +2580,11 @@
 	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);
 
-	// 20170817 smok Dark, Bright 이미지가 리뷰 이미지 아래에 붙도록 수정
+	// 20170817 smok Dark, Bright 占싱뱄옙占쏙옙占쏙옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싣뤄옙占쏙옙 占쌕듸옙占쏙옙 占쏙옙占쏙옙
 	int nX = 0;
 	int nY = nTotalHeight;
 	pAoiDark1->ShowImage(pDC->m_hDC, nX, nY, pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0);
@@ -2590,7 +2592,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
@@ -2611,7 +2613,7 @@
 	CFont *pOldFont = pDC->SelectObject(&Font);
 	pDC->SetTextColor(RGB(255,0,0));
 
-	CString strArrow = _T("↗");
+	CString strArrow = _T("占쏙옙");
 	CSize size = pDC->GetTextExtent(strArrow);
 	int nCenterX = nX + (nWidth / 2) - size.cx;
 	int nCenterY = nY + (nHeight / 2)/* + (size.cy / 2)*/;
@@ -2814,7 +2816,7 @@
 	else {
 		wchar_t  pstrPrefix[128] ={};
 
-		//Zone 넘버 210127
+		//Zone 占싼뱄옙 210127
 		int nValue = 0;
 		for (int i = 15; i >= 0; i--)
 		{
@@ -2825,8 +2827,8 @@
 		}
 
 		//taek 210127
-		//결과파일 좌표값 y 는 *-1을 하자
-		//설비 ID, 검사 카메라 정보, 검사 Camera 정보 : (? ) 캠 ?, Cell ID,	Review Cam 정보 : Gantry 정보,	검출 Size,	검출 Zone 정보,	Stak Flag, CODE 정보, 좌표 정보
+		//占쏙옙占쏙옙占쏙옙占� 占쏙옙표占쏙옙 y 占쏙옙 *-1占쏙옙 占쏙옙占쏙옙
+		//占쏙옙占쏙옙 ID, 占싯삼옙 카占쌨띰옙 占쏙옙占쏙옙, 占싯삼옙 Camera 占쏙옙占쏙옙 : (? ) 캠 ?, Cell ID,	Review Cam 占쏙옙占쏙옙 : Gantry 占쏙옙占쏙옙,	占쏙옙占쏙옙 Size,	占쏙옙占쏙옙 Zone 占쏙옙占쏙옙,	Stak Flag, CODE 占쏙옙占쏙옙, 占쏙옙표 占쏙옙占쏙옙
 		
 		// PPID
 // 		strValue.Format(_T("Tool[%s].Recipe[%s].ScanNo[%d/%d].Time[%4d/%2d/%2d_%d:%d:%d].MaxGray[%d].RefGray[%d].REVCnt[%d]"),pReviewResult->strEquipID,pGlassResult->m_strPPID,pReviewResult->nAOIScanIdx,0,snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(),
@@ -3041,7 +3043,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 
@@ -3118,7 +3120,7 @@
 	// 		strFileName += pReviewResult->strSnapTime;
 	// 	}
 
-	// [2017:4:10]-[WEZASW] : 고객사 요청에 의한 bmp 파일 추가 저장. (임시사용)
+	// [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占� 占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占�)
 	pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp");
 
 	strFileName += _T(".jpg");
@@ -3164,7 +3166,7 @@
 	int nStartResultIdx	= pReviewResult->GetStartSReviewResultIndex();
 	int nEndResultIdx	= pReviewResult->GetEndSReviewResultIndex();
 
-	// 인덱스가 현재 마지막 인덱스 보다 클시..
+	// 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙 占쏙옙占쏙옙 클占쏙옙..
 	if (nCurResultIdx > nEndResultIdx)  
 	{
 		LeaveCriticalSection(&m_csUserCriticalSection);
@@ -3172,7 +3174,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;
 
@@ -3182,7 +3184,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))
 	{
@@ -3191,10 +3193,10 @@
 		pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx);
 	}
 
-	// 저장 성공시, 리뷰 프로세서에 포인터 전달
+	// 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙, 占쏙옙占쏙옙 占쏙옙占싸쇽옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 	if (pProcessResult)
 	{
-		// 처리 쓰레드 수행
+		// 처占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
 		if (AddReviewProcessData(pProcessResult)==1)
 		{
 			g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Wsi Reflow Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx);
@@ -3210,7 +3212,7 @@
 
 	LeaveCriticalSection(&m_csUserCriticalSection);
 
-	// 결과 갱신.
+	// 占쏙옙占� 占쏙옙占쏙옙.
 	m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, 5);
 	return;
 
@@ -3219,7 +3221,7 @@
 	return;
 }
 
-//0129cmark 원점 위치별 센터 좌표를 원점 좌표로 변형 
+//0129cmark 占쏙옙占쏙옙 占쏙옙치占쏙옙 占쏙옙占쏙옙 占쏙옙표占쏙옙 占쏙옙占쏙옙 占쏙옙표占쏙옙 占쏙옙占쏙옙 
 double CReviewProcessor_CPJT::GetCentertoOrginCoordinate(double dPosX,double dPosY,int nCornercut,int nOriginDirection){
 
 	double nResultPosX=0.0;
@@ -3228,60 +3230,60 @@
 	// CornerCutDirection	{ CLeftTop=0, CRightTop, CLeftBottom,   CRightBottom };
 	// OriginDirection	{ OLeftTop=0, ORightTop, OLeftBottom,   ORightBottom };
 
-	if(nOriginDirection==RPOLeftTop){//오리진좌상
+	if(nOriginDirection==RPOLeftTop){//占쏙옙占쏙옙占쏙옙占승삼옙
 
-		if(nCornercut == RPCLeftTop)//좌상 
+		if(nCornercut == RPCLeftTop)//占승삼옙 
 		{ 
 			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;
 
 		}
-		else if(nCornercut == RPCLeftBottom)//좌하
+		else if(nCornercut == RPCLeftBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY;
 		}
-		else if(nCornercut == RPCRightBottom)//우하
+		else if(nCornercut == RPCRightBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2 + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2 + dPosY;
 		}
 	}
 
-	else if(nOriginDirection==RPORightTop){//오리진우상
+	else if(nOriginDirection==RPORightTop){//占쏙옙占쏙옙占쏙옙占쏙옙占�
 
-		if(nCornercut == RPCLeftTop)//좌상 
+		if(nCornercut == RPCLeftTop)//占승삼옙 
 		{ 
 			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;
 
 		}
-		else if(nCornercut == RPCLeftBottom)//좌하
+		else if(nCornercut == RPCLeftBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY;
 		}
-		else if(nCornercut == RPCRightBottom)//우하
+		else if(nCornercut == RPCRightBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY;
 		}
 	}
-	else if(nOriginDirection==RPOLeftBottom){//오리진좌하
+	else if(nOriginDirection==RPOLeftBottom){//占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙
 
-		if(nCornercut == RPCLeftTop)//좌상 
+		if(nCornercut == RPCLeftTop)//占승삼옙 
 		{ 
 			//210402
 		/*	nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX;
@@ -3290,13 +3292,13 @@
 			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;
 
 		}
-		else if(nCornercut == RPCLeftBottom)//좌하
+		else if(nCornercut == RPCLeftBottom)//占쏙옙占쏙옙
 		{
 			//210402
 			/*nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX;
@@ -3304,33 +3306,33 @@
 			nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY;
 		}
-		else if(nCornercut == RPCRightBottom)//우하
+		else if(nCornercut == RPCRightBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH) / 2. - dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY;
 		}
 	}
 	else if (nOriginDirection==RPORightBottom)
-	{//오리진우하
+	{//占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙
 
-		if(nCornercut == RPCLeftTop)//좌상 
+		if(nCornercut == RPCLeftTop)//占승삼옙 
 		{ 
 			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;
 
 		}
-		else if(nCornercut == RPCLeftBottom)//좌하
+		else if(nCornercut == RPCLeftBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY;
 		}
-		else if(nCornercut == RPCRightBottom)//우하
+		else if(nCornercut == RPCRightBottom)//占쏙옙占쏙옙
 		{
 			nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX;
 			nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY;
@@ -3355,7 +3357,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 
@@ -3419,24 +3421,31 @@
 {
 	if(pReviewResult == NULL)	return FALSE;
 
-	//결과파일 공유 메모리 리뷰 이미지 이름 및 좌표 채워주기
+	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawCleint = CDitGlassRawClient::GetInstance();
 	if(pDitGlassRawCleint->isConnect() == TRUE)
 	{
 		
 		_grmDefectData* pSharedDefect = pDitGlassRawCleint->GetDefectData(pReviewResult->nDefectidx2);
 		_grmDefectReviewData * pSharedDefectReview = &pSharedDefect->m_ReviewDefect;
+		_grmGlassData* pSharedGlassData = pDitGlassRawCleint->GetGlassData();
 		
 		//size_t CharactersConverted;
 		//wcstombs_s(&CharactersConverted, pSharedDefectReview->m_strRevImageName, pReviewResult->strImgFileName, _TRUNCATE);
 
 		strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName.MakeLower());
 		
+		//taek 210624 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙 占쏙옙占쌔댐옙.
 
-		pSharedDefectReview->m_nPlanType =  ditRaw::RPT_Review;	//0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(외부 로컬 리뷰 명령)			
+		strcpy(pSharedDefectReview->m_strRevImagePath,pReviewResult->strImgFilePath.MakeLower());
+
+		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_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;
@@ -3450,11 +3459,11 @@
 
 BOOL CReviewProcessor_CPJT::UpdateMemoryUserPlan( SReviewResult* pReviewResult )
 {
-	//결과파일 공유 메모리 리뷰 이미지 이름 및 좌표 채워주기
+	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙
 	CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
 	if(pDitRawClient->isConnect() == TRUE)
 	{
-		int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow 는 검사 디펙 이후 생성되기에 디펙 카운트보다 같거나 큰값을 가지고 있다
+		int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow 占쏙옙 占싯삼옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占실기에 占쏙옙占쏙옙 카占쏙옙트占쏙옙占쏙옙 占쏙옙占신놂옙 큰占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌍댐옙
 		if(pReviewResult->nDefectIdx <nDefectCount)
 		{	
 			return FALSE;
@@ -3467,14 +3476,16 @@
 		
 		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;
 		pSharedDefectReview->m_nModuleIndex;
+		pSharedDefect->m_nModelIdx = pReviewResult->nModuleIdx;
 		pSharedDefectReview->m_nMagnificIndex = pReviewResult->dMagnification;
 		pSharedDefectReview->m_fManification = pReviewResult->dMagnification;
 		pSharedDefectReview->m_fManificResoultion = pReviewResult->dMagnification;
-			m_pRP2P->IRP2P_DisplayMessage(_T("[공유메모리접근]인덱스[%d]파일명[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName);
+			m_pRP2P->IRP2P_DisplayMessage(_T("[占쏙옙占쏙옙占쌨몌옙占쏙옙占쏙옙]占싸듸옙占쏙옙[%d]占쏙옙占싹몌옙[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName);
 	}
 
 
@@ -3484,7 +3495,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("");
@@ -3506,7 +3517,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);
@@ -3525,7 +3536,7 @@
 				nReflowjuge=0;
 			}
 			
-			//0:None, // 검출한 Line의 개수. 3 미만 : DAM2 Reflow 판정, 4~5 : DAM1 Reflow 판정, 6 : no Reflow 판정 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
+			//0:None, // 占쏙옙占쏙옙占쏙옙 Line占쏙옙 占쏙옙占쏙옙. 3 占싱몌옙 : DAM2 Reflow 占쏙옙占쏙옙, 4~5 : DAM1 Reflow 占쏙옙占쏙옙, 6 : no Reflow 占쏙옙占쏙옙 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
 			if(pReviewResult->nReflow_CellIndex > 7)
 			{
 				pReviewResult->nReflow_CellIndex = 0;
@@ -3542,7 +3553,7 @@
 
 	if(pDitRawClient->isConnect() == TRUE)
 	{
-		int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow 는 검사 디펙 이후 생성되기에 디펙 카운트보다 같거나 큰값을 가지고 있다
+		int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow 占쏙옙 占싯삼옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占실기에 占쏙옙占쏙옙 카占쏙옙트占쏙옙占쏙옙 占쏙옙占신놂옙 큰占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌍댐옙
 		if(pReviewResult->nDefectidx2 <nDefectCount)
 		{
 			return FALSE;
@@ -3557,11 +3568,11 @@
 
 		pSharedDefectReview->m_nPlanType =  ditRaw::RTP_Reflow;			
 		pSharedDefectReview->m_nReflow_ResultCode = pReviewResult->nReflow_Result;// pReviewResult->nReflow_Result;  
-		//0:None, // 검출한 Line의 개수. 3 미만 : DAM2 Reflow 판정, 4~5 : DAM1 Reflow 판정, 6 : no Reflow 판정 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
+		//0:None, // 占쏙옙占쏙옙占쏙옙 Line占쏙옙 占쏙옙占쏙옙. 3 占싱몌옙 : DAM2 Reflow 占쏙옙占쏙옙, 4~5 : DAM1 Reflow 占쏙옙占쏙옙, 6 : no Reflow 占쏙옙占쏙옙 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
 		//pSharedDefectReview->m_fReflow_LinePosData;	
 		pSharedDefectReview->m_nReflow_Side = pReviewResult->nReflow_Side;
 		pSharedDefectReview->m_nReflow_InspectionMode = 0;
-		m_pRP2P->IRP2P_DisplayMessage(_T("[공유메모리접근]인덱스[%d]파일명[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName);
+		m_pRP2P->IRP2P_DisplayMessage(_T("[占쏙옙占쏙옙占쌨몌옙占쏙옙占쏙옙]占싸듸옙占쏙옙[%d]占쏙옙占싹몌옙[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName);
 	}
 	
 	return TRUE;
@@ -3571,7 +3582,7 @@
 {
 	if(pReviewResult == NULL)	return FALSE;
 
-	//결과파일 공유 메모리에 결과 채워 넣기
+	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance();
 
 	if(pDitGlassRawClient->isConnect() == TRUE)
@@ -3588,7 +3599,7 @@
 
 		pSharedDefectReview->m_nPlanType =  ditRaw::RTP_WSI;			
 		pSharedDefectReview->m_nWsi_ResultCode=pReviewResult->nWsi_ResultCode; //0:None, 1:Success
-		pSharedDefectReview->m_nWsi_Type = 2;/* nWSIType;									// 함몰 / 돌기 //wsi 진행 */
+		pSharedDefectReview->m_nWsi_Type = 2;/* nWSIType;									// 占쌉몌옙 / 占쏙옙占쏙옙 //wsi 占쏙옙占쏙옙 */
 		pSharedDefectReview->m_fWsi_ResultData[0]= pReviewResult->nWsi_DefectType; // 0:normal 1:metal 2:huge 3:diffuse 4:trashy
 		pSharedDefectReview->m_fWsi_ResultData[1]=(float)(nWSIheight/1000.0); 
 		pSharedDefectReview->m_fWsi_ResultData[2]=(float)(nWSIWidth/1000.0);			// 0:Type, 1:Height, 2:Width
@@ -3598,7 +3609,7 @@
 		pSharedDefectReview->m_fWsi_ResultData[6] = pReviewResult->dBZoneHeight;
 		pSharedDefectReview->m_strWsi_2DImageFilename;
 		pSharedDefectReview->m_strWsi_3DImageFilename;
-		pSharedDefectReview->m_fWsiManification = 20;//20배 고정
+		pSharedDefectReview->m_fWsiManification = 20;//20占쏙옙 占쏙옙占쏙옙
 		pSharedDefectReview->m_dWsiMmMotorX=pReviewResult->dTargetMotorX;
 		pSharedDefectReview->m_dWsiMmMotorY=pReviewResult->dTargetMotorY;
 		
@@ -3613,7 +3624,7 @@
 BOOL CReviewProcessor_CPJT::UpdateMemoryWsiReflowPlan( SReviewResult* pReviewResult )
 {
 	if(pReviewResult == NULL)	return FALSE;
-	//결과파일 공유 메모리에 결과 채워 넣기
+	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
 	
 
@@ -3627,13 +3638,13 @@
 
 	/*
 	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->GetDouble(0)       = 댐에서 Monomo까지의 거리
+	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占쏙옙占쏙옙占쏙옙 占신몌옙
 	*/
 	
 // 	int nReflowjuge=0;
@@ -3644,7 +3655,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
@@ -3704,7 +3715,7 @@
 {
 	if(pReviewResult == NULL)	return FALSE;
 
-	//결과파일 공유 메모리에 결과 채워 넣기
+	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance();
 
 	if(pDitGlassRawClient->isConnect() == TRUE)
@@ -3721,13 +3732,13 @@
 
 		pSharedDefectReview->m_nPlanType =  ditRaw::RTP_UserWsi;			
 		pSharedDefectReview->m_nWsi_ResultCode=pReviewResult->nWsi_ResultCode; //0:None, 1:Success
-		pSharedDefectReview->m_nWsi_Type=nWSIType;									// 함몰 / 돌기
+		pSharedDefectReview->m_nWsi_Type=nWSIType;									// 占쌉몌옙 / 占쏙옙占쏙옙
 		pSharedDefectReview->m_fWsi_ResultData[0]= nWSIType;
 		pSharedDefectReview->m_fWsi_ResultData[1]=(float)(nWSIheight/100.0);
 		pSharedDefectReview->m_fWsi_ResultData[2]=(float)(nWSIWidth/100.0);			// 0:Type, 1:Height, 2:Width
 		pSharedDefectReview->m_strWsi_2DImageFilename;
 		pSharedDefectReview->m_strWsi_3DImageFilename;
-		pSharedDefectReview->m_fWsiManification = 20;//20배 고정
+		pSharedDefectReview->m_fWsiManification = 20;//20占쏙옙 占쏙옙占쏙옙
 		pSharedDefectReview->m_dWsiMmMotorX=pReviewResult->dTargetMotorX;
 		pSharedDefectReview->m_dWsiMmMotorY=pReviewResult->dTargetMotorY;
 	}
@@ -3739,7 +3750,7 @@
 {
 	if (pReviewResult == NULL)	return FALSE;
 
-	//결과파일 공유 메모리에 결과 채워 넣기
+	//占쏙옙占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占� 채占쏙옙 占쌍깍옙
 	CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance();
 
 	if (pDitGlassRawClient->isConnect() == TRUE)
@@ -3756,13 +3767,13 @@
 
 		pSharedDefectReview->m_nPlanType = ditRaw::RTP_WSI;
 		pSharedDefectReview->m_nWsi_ResultCode = pReviewResult->nWsi_ResultCode; //0:None, 1:Success
-		pSharedDefectReview->m_nWsi_Type = nWSIType;									// 함몰 / 돌기
+		pSharedDefectReview->m_nWsi_Type = nWSIType;									// 占쌉몌옙 / 占쏙옙占쏙옙
 		pSharedDefectReview->m_fWsi_ResultData[0] = nWSIType;
 		pSharedDefectReview->m_fWsi_ResultData[1] = (float)(nWSIheight / 100.0);
 		pSharedDefectReview->m_fWsi_ResultData[2] = (float)(nWSIWidth / 100.0);			// 0:Type, 1:Height, 2:Width
 		pSharedDefectReview->m_strWsi_2DImageFilename;
 		pSharedDefectReview->m_strWsi_3DImageFilename;
-		pSharedDefectReview->m_fWsiManification = 20;//20배 고정
+		pSharedDefectReview->m_fWsiManification = 20;//20占쏙옙 占쏙옙占쏙옙
 		pSharedDefectReview->m_dWsiMmMotorX = pReviewResult->dTargetMotorX;
 		pSharedDefectReview->m_dWsiMmMotorY = pReviewResult->dTargetMotorY;
 
@@ -3793,7 +3804,7 @@
 	double TempValue = 0;
 	double m_nResultFocusValue = 0;
 
-	// 원점 XY 기준 X+1, Y+1에 대한 차영상
+	// 占쏙옙占쏙옙 XY 占쏙옙占쏙옙 X+1, Y+1占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
 	for (int y = 0; y < nHeight - 1; y++)
 	{
 		for (int x = 0; x < nWidth - 1; x++)

--
Gitblit v1.9.3