From 80931d57bc4e33af192dce9a9b427500fd08967a Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 목, 28 10월 2021 13:18:35 +0900
Subject: [PATCH] Ongoing90 #3718 CF AOI Review WSI TimeOver 시 WSI Start 예외 처리 추가

---
 ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp |  152 ++++++++++++++++++++++++++++++--------------------
 1 files changed, 91 insertions(+), 61 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
index fd16d92..66d291a 100644
--- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -1680,10 +1680,14 @@
 // 		m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!"));
 
 	CDitGlassRawClient* m_pDitGlassRaw = CDitGlassRawClient::GetInstance();
-	if (m_pSP2P->ISP2P_GetWSIControl(0)!=NULL)
+	if (GetSimulationMode() == FALSE && m_pSP2P->ISP2P_GetWSIControl(0)!=NULL)
 	{
 		m_pSP2P->ISP2P_GetWSIControl(0)->SetWsiTimeOver();
 		m_pSP2P->ISP2P_GetWSIControl(1)->SetWsiTimeOver();
+		/*< LYW 20211015 - #3662 ADD Start >*/
+		m_pSP2P->ISP2P_GetWSIControl(0)->SetWsiEnd();
+		m_pSP2P->ISP2P_GetWSIControl(1)->SetWsiEnd();
+		/*< LYW 20211015 - #3662 ADD End >*/
 	}
 	if (GetLastPointCheck() == FALSE)
 	{
@@ -3400,67 +3404,76 @@
 
 void CSequenceProcessor_CPJT::UpdateHistoryResultFromTransferData(CGlassResult *pHistoryResult, CGlassResult* pGlassResult)
 {
-	if (pHistoryResult == NULL || pGlassResult == NULL) return;
+	try
+	{
+		if (pHistoryResult == NULL || pGlassResult == NULL) return;
 
-	CTime time = CTime::GetCurrentTime();
+		CTime time = CTime::GetCurrentTime();
 
-	CString strTime = _T("");
-	strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
+		CString strTime = _T("");
+		strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
 
-	// update transfer data to glass result
-	pHistoryResult->m_nGlassSizeX = pGlassResult->m_nGlassSizeX;
-	pHistoryResult->m_nGlassSizeY = pGlassResult->m_nGlassSizeY;
-	pHistoryResult->m_nCollisionDistanceX = pGlassResult->m_nCollisionDistanceX;
-	pHistoryResult->m_nCollisionDistanceY = pGlassResult->m_nCollisionDistanceY;
-	pHistoryResult->m_nCollisionXPos1 = pGlassResult->m_nCollisionXPos1;
-	pHistoryResult->m_nCollisionXPos2 = pGlassResult->m_nCollisionXPos2;
-	pHistoryResult->m_nOriginDir = pGlassResult->m_nOriginDir;
-	pHistoryResult->m_strResultDate = pGlassResult->m_strResultDate;
-	pHistoryResult->m_vecReviewScheduleResult = pGlassResult->m_vecReviewScheduleResult;
-	pHistoryResult->m_nCornerCutDir = pGlassResult->m_nCornerCutDir;
-	pHistoryResult->m_bReadRawFile = pGlassResult->m_bReadRawFile;
-	pHistoryResult->m_vecReviewResult = pGlassResult->m_vecReviewResult;
-	pHistoryResult->m_strGlassLastName = pGlassResult->m_strGlassLastName;
-	pHistoryResult->m_strGlassID = pGlassResult->m_strGlassID;
-	pHistoryResult->m_strGlassCode = pGlassResult->m_strGlassCode;
-	pHistoryResult->m_strMode = pGlassResult->m_strMode;
-	pHistoryResult->m_strGlassType = pGlassResult->m_strGlassType;
-	pHistoryResult->m_strDummyType = pGlassResult->m_strDummyType;
-	pHistoryResult->m_strProdID = pGlassResult->m_strProdID;
-	pHistoryResult->m_strOperID = pGlassResult->m_strOperID;
-	pHistoryResult->m_strLotID = pGlassResult->m_strLotID;
-	pHistoryResult->m_strPPID = pGlassResult->m_strPPID;
-	pHistoryResult->m_strPPID_RC = pGlassResult->m_strPPID_RC;
-	pHistoryResult->m_strJobType = pGlassResult->m_strJobType;
-	pHistoryResult->m_strJobID = pGlassResult->m_strJobID;
-	pHistoryResult->m_strLotSeqNum = pGlassResult->m_strLotSeqNum;
-	pHistoryResult->m_strSlotSeqNum = pGlassResult->m_strSlotSeqNum;
-	pHistoryResult->m_strPropertyCode = pGlassResult->m_strPropertyCode;
-	pHistoryResult->m_strJobJudgeCode = pGlassResult->m_strJobJudgeCode;
-	pHistoryResult->m_strJobGradeCode = pGlassResult->m_strJobGradeCode;
-	pHistoryResult->m_strSubstrateType = pGlassResult->m_strSubstrateType;
-	pHistoryResult->m_strProcessingFlag = pGlassResult->m_strProcessingFlag;
-	pHistoryResult->m_strInspectionFlag = pGlassResult->m_strInspectionFlag;
-	pHistoryResult->m_strSkipFlag = pGlassResult->m_strSkipFlag;
-	pHistoryResult->m_strJobSize = pGlassResult->m_strJobSize;
-	pHistoryResult->m_strGlassThickness = pGlassResult->m_strGlassThickness;
-	pHistoryResult->m_strJobAngle = pGlassResult->m_strJobAngle;
-	pHistoryResult->m_strJobFlip = pGlassResult->m_strJobFlip;
-	pHistoryResult->m_strCuttingGlassType = pGlassResult->m_strCuttingGlassType;
-	pHistoryResult->m_strProcessingCount = pGlassResult->m_strProcessingCount;
-	pHistoryResult->m_strInspectionJudgeData = pGlassResult->m_strInspectionJudgeData;
-	pHistoryResult->m_strPairJobID = pGlassResult->m_strPairJobID;
-	pHistoryResult->m_strPairFlag = pGlassResult->m_strPairFlag;
-	pHistoryResult->m_strOptionValue = pGlassResult->m_strOptionValue;
-	pHistoryResult->m_strReserved = pGlassResult->m_strReserved;
-	pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;// cmark
-	pHistoryResult->m_strStepID = pGlassResult->m_strRTMSStepID; //taek 210126
-	pHistoryResult->m_strEquipID = pGlassResult->m_strEquipID;
-	pHistoryResult->m_strProcessID = pGlassResult->m_strProcessID;
-	pHistoryResult->m_strUploadImgFileName = pGlassResult->m_strUploadImgFileName;
-	pHistoryResult->m_strUnLoadingTime = strTime;
-	pHistoryResult->m_mapDefectResult = pGlassResult->m_mapDefectResult;
-	pHistoryResult->m_AlignResult = pGlassResult->m_AlignResult;
+		// update transfer data to glass result
+		pHistoryResult->m_nGlassSizeX = pGlassResult->m_nGlassSizeX;
+		pHistoryResult->m_nGlassSizeY = pGlassResult->m_nGlassSizeY;
+		pHistoryResult->m_nCollisionDistanceX = pGlassResult->m_nCollisionDistanceX;
+		pHistoryResult->m_nCollisionDistanceY = pGlassResult->m_nCollisionDistanceY;
+		pHistoryResult->m_nCollisionXPos1 = pGlassResult->m_nCollisionXPos1;
+		pHistoryResult->m_nCollisionXPos2 = pGlassResult->m_nCollisionXPos2;
+		pHistoryResult->m_nOriginDir = pGlassResult->m_nOriginDir;
+		pHistoryResult->m_strResultDate = pGlassResult->m_strResultDate;
+		pHistoryResult->m_vecReviewScheduleResult = pGlassResult->m_vecReviewScheduleResult;
+		pHistoryResult->m_nCornerCutDir = pGlassResult->m_nCornerCutDir;
+		pHistoryResult->m_bReadRawFile = pGlassResult->m_bReadRawFile;
+		pHistoryResult->m_vecReviewResult = pGlassResult->m_vecReviewResult;
+		pHistoryResult->m_strGlassLastName = pGlassResult->m_strGlassLastName;
+		pHistoryResult->m_strGlassID = pGlassResult->m_strGlassID;
+		pHistoryResult->m_strGlassCode = pGlassResult->m_strGlassCode;
+		pHistoryResult->m_strMode = pGlassResult->m_strMode;
+		pHistoryResult->m_strGlassType = pGlassResult->m_strGlassType;
+		pHistoryResult->m_strDummyType = pGlassResult->m_strDummyType;
+		pHistoryResult->m_strProdID = pGlassResult->m_strProdID;
+		pHistoryResult->m_strOperID = pGlassResult->m_strOperID;
+		pHistoryResult->m_strLotID = pGlassResult->m_strLotID;
+		pHistoryResult->m_strPPID = pGlassResult->m_strPPID;
+		pHistoryResult->m_strPPID_RC = pGlassResult->m_strPPID_RC;
+		pHistoryResult->m_strJobType = pGlassResult->m_strJobType;
+		pHistoryResult->m_strJobID = pGlassResult->m_strJobID;
+		pHistoryResult->m_strLotSeqNum = pGlassResult->m_strLotSeqNum;
+		pHistoryResult->m_strSlotSeqNum = pGlassResult->m_strSlotSeqNum;
+		pHistoryResult->m_strPropertyCode = pGlassResult->m_strPropertyCode;
+		pHistoryResult->m_strJobJudgeCode = pGlassResult->m_strJobJudgeCode;
+		pHistoryResult->m_strJobGradeCode = pGlassResult->m_strJobGradeCode;
+		pHistoryResult->m_strSubstrateType = pGlassResult->m_strSubstrateType;
+		pHistoryResult->m_strProcessingFlag = pGlassResult->m_strProcessingFlag;
+		pHistoryResult->m_strInspectionFlag = pGlassResult->m_strInspectionFlag;
+		pHistoryResult->m_strSkipFlag = pGlassResult->m_strSkipFlag;
+		pHistoryResult->m_strJobSize = pGlassResult->m_strJobSize;
+		pHistoryResult->m_strGlassThickness = pGlassResult->m_strGlassThickness;
+		pHistoryResult->m_strJobAngle = pGlassResult->m_strJobAngle;
+		pHistoryResult->m_strJobFlip = pGlassResult->m_strJobFlip;
+		pHistoryResult->m_strCuttingGlassType = pGlassResult->m_strCuttingGlassType;
+		pHistoryResult->m_strProcessingCount = pGlassResult->m_strProcessingCount;
+		pHistoryResult->m_strInspectionJudgeData = pGlassResult->m_strInspectionJudgeData;
+		pHistoryResult->m_strPairJobID = pGlassResult->m_strPairJobID;
+		pHistoryResult->m_strPairFlag = pGlassResult->m_strPairFlag;
+		pHistoryResult->m_strOptionValue = pGlassResult->m_strOptionValue;
+		pHistoryResult->m_strReserved = pGlassResult->m_strReserved;
+		pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;// cmark
+		pHistoryResult->m_strStepID = pGlassResult->m_strRTMSStepID; //taek 210126
+		pHistoryResult->m_strEquipID = pGlassResult->m_strEquipID;
+		pHistoryResult->m_strProcessID = pGlassResult->m_strProcessID;
+		pHistoryResult->m_strUploadImgFileName = pGlassResult->m_strUploadImgFileName;
+		pHistoryResult->m_strUnLoadingTime = strTime;
+		pHistoryResult->m_mapDefectResult = pGlassResult->m_mapDefectResult;
+		pHistoryResult->m_AlignResult = pGlassResult->m_AlignResult;
+	}
+	catch (...)
+	{
+		m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Review End] UpdateHistoryResultFromTransferData Error"));
+		return;
+	}
+	
 }
 
 void CSequenceProcessor_CPJT::CreateResultDirectory(const CString& strGlassID, const CString& strDate)
@@ -3763,6 +3776,12 @@
 		pGlassResult->m_AlignRecipe.dMatchingRate		= pRsRcpAlignInfo->m_dMatchingRate;
 		pGlassResult->m_AlignRecipe.strFirstImageFile	= pRsRcpAlignInfo->m_strFirstImageFile;
 		pGlassResult->m_AlignRecipe.strSecondImageFile	= pRsRcpAlignInfo->m_strSecondImageFile;
+		/*< LYW 20211012 - #3671 ADD Start >*/
+		pGlassResult->m_AlignRecipe.strFirstAssistantImageFile = pRsRcpAlignInfo->m_strFirstAssistantImageFile;
+		pGlassResult->m_AlignRecipe.strSecondAssistantImageFile = pRsRcpAlignInfo->m_strSecondAssistantImageFile;
+		pGlassResult->m_AlignRecipe.strMatchingPixelStandard = pRsRcpAlignInfo->m_strMatchingPixelStandard;
+		pGlassResult->m_AlignRecipe.strMatchingAlarmCondition = pRsRcpAlignInfo->m_strMatchingAlarmCondition;
+		/*< LYW 20211012 - #3671 ADD End >*/
 		pGlassResult->m_AlignRecipe.strTotalPitchImageFile = pRsRcpAlignInfo->m_strTotalPitchImageFile;
 
 		// edge find param
@@ -4651,6 +4670,16 @@
 	SetWsiType(0);
 	WSIAllReadySignal(1);
 	Sleep(1000);
+
+	/*< LYW 20211028 - #3718 ADD Start >*/
+	// WSI Redeay �넚�떊�썑 Review TimeOver 1�쉶 異붽� 泥댄겕
+	if (GetProcessStatus() == ProcessReviewEnd_CPJT || GetProcessStatus() == ProcessReviewUnloding_CPJT)
+	{
+		g_pLog->DisplayMessage(_T("[ProcessStop] WSI StartProcessing Sequence Stop Status : %d"), GetProcessStatus());
+		return TRUE;
+	}
+	/*< LYW 20211028 - #3718 ADD End >*/
+
 	if(!WSIAllStartSignal())
 	{
 		g_pLog->DisplayMessage(_T("[WSI] WSI Start Fail!!"));
@@ -8460,8 +8489,8 @@
 				m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Review Start Ack! => %d"), 1);
 				break;
 
-			case PCControlSend_ResultDataComplete_CPJT:
-				m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Result Data Complete! => %d"), 1);
+			case PCControlSend_ReviewEndAck_CPJT:
+				m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Review End Ack! => %d"), 1);
 				break;
 			}
 		}
@@ -8619,6 +8648,7 @@
 	case PCControlRecv_AutoMode_CPJT:		// auto mode on
 		{
 			m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Auto Mode"));
+			SetSimulationMode(FALSE);
 			bResult = SetProcessMode(ProcessAutoMode_CPJT);
 			if (bResult==FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Auto Mode Error!"));
 		}

--
Gitblit v1.9.3