From 6e67289f2d2512398095e69b269906e5b02d5696 Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 금, 09 7월 2021 09:14:44 +0900
Subject: [PATCH] Merge branch 'feature/#3486_CF_AOI_Review_Review_History_프로그램_테스트_및_적용' into feature/#3495_CF_AOI_Review(QD,_Blue)_GlassLoading_시_다운_현상_조치

---
 ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp |   70 ++++++++++++++++++++++++++--------
 1 files changed, 53 insertions(+), 17 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
index aea1b64..ebac4f6 100644
--- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -48,6 +48,7 @@
 
 #define AOIRAWBIN_PATH		"\\\\126.100.100.1\\d\\DIT_ResultData\\RawBin"
 #define AOIRAWBIN_TEST_PATH		"d:\\DIT_ResultData\\RawBin"
+#define AOIRAWBIN_NETWORK_DRIVE_PATH	"Y:\\RawBin"
 
 enum CPJT_MeasureMode { CPJT_ModeAuto = 0, CPJT_ModeManual };
 // [2017:4:18]-[WEZASW] : WSI Module 장착 설비의 경우 PlanType 번호 변경.
@@ -787,6 +788,20 @@
 			if (( nTotalCount += pGlassResult->GetTotalSReviewResultCount()) > 0)
 			{
 				m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] Review Plan Start!"));
+				//LYW DCOLL 임시조치
+				CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance();
+				if (pDitRawClient->isConnect() == TRUE)
+				{
+
+					_grmDefectData* pSharedDefect = pDitRawClient->GetDefectData(0);//pReviewResult->nDefectidx2
+					_grmDefectReviewData * pSharedDefectReview = &pSharedDefect->m_ReviewDefect;
+
+					//size_t CharactersConverted;
+					//wcstombs_s(&CharactersConverted, pSharedDefectReview->m_strRevImageName, pReviewResult->strImgFileName, _TRUNCATE);
+
+					strcpy(pSharedDefectReview->m_strRevImageName, "");
+				}
+				//LYW DCOLL 임시조치
 				::Sleep(nWaitTime);
 				m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone();
 				bExcute = ReviewStartProcessing(pGlassResult, nPlanIdx);
@@ -963,7 +978,7 @@
 	//	m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Revolver Set GoHome Success!"));
 	//}
 
-	//210330 kyh Align Image 초기화
+	//#3357 KYH Align Image 초기화 ADD START
 	CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl();
 	if (pAlignCameraControl != NULL)
 	{
@@ -971,6 +986,7 @@
 
 		g_pLog->DisplayMessage(_T("[Align] Align Image Clear"));
 	}
+	//#3357 KYH Align Image 초기화 ADD END
 
  	// get transfer data
  	int nResultCode = 0;
@@ -1025,6 +1041,10 @@
 				
 
 			}
+
+			// #3381 LYW CF AOI Review 전설비 FDC TackTime 오보고 현상 개선 ADD START
+			pDitRawClient->GetGlassData()->m_tmReviewLoading = CTime::GetCurrentTime();
+			// #3381 LYW CF AOI Review 전설비 FDC TackTime 오보고 현상 개선 ADD END
 			
 
 			CString strGlassIDTemp = NULL;
@@ -1041,6 +1061,7 @@
 			m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!"));
 
 			strFileName.Format(_T("%s_%s"), strGlassIDTemp, strGlassStepIdTemp);
+			//업데이트시
 			bFileFind = FindRawBinFile(strFileName);
 			//bFileFind = TRUE;
 
@@ -1506,6 +1527,9 @@
 {
 	m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReviewEnd!"));
 
+	if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT))
+		m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!"));
+
 	CDitGlassRawClient* m_pDitGlassRaw = CDitGlassRawClient::GetInstance();
 	if (m_pSP2P->ISP2P_GetWSIControl(0)!=NULL)
 	{
@@ -1522,9 +1546,6 @@
 	
 	m_pDitGlassRaw->GetGlassData()->m_nReviewNum = m_pSP2P->ISP2P_GetReviewProcessor()->GetPlanReviewCount();
     //SendDVDataToSignalControl();// 안쓰쥬
-
-	if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT))
-		m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!"));
 
 	//OverTime 발생시 제어에서 END ACK를 기다리는게 아니라 걍 Conplete를 기다린다.
 	//음 ... 로직  오류인데일단 추가 
@@ -2635,11 +2656,22 @@
 	{
 		CTime tmReviewLoading = CTime::GetCurrentTime();
 		CString strWild;
-		strWild.Format("%s\\%s_*.bin", strFilePath, strFileName);
+		//strWild.Format("%s\\%s_*.bin", strFilePath, strFileName);
 		CakFileUtil akFileFinder;
 		while (nReTryTime--)
 		{
-			akFileFinder.FindFile(strWild.GetBuffer(0), FALSE);
+			//#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER 알람 발생 원인 분석 START
+			if (nReTryTime%2 == 0)
+			{
+				strFilePath = AOIRAWBIN_PATH;
+			}
+			else strFilePath = AOIRAWBIN_NETWORK_DRIVE_PATH;
+
+			strWild.Format("%s\\%s_*.bin", strFilePath, strFileName);
+			 akFileFinder.FindFile(strWild.GetBuffer(0), FALSE);
+			//LYW LOG추가
+			g_pLog->DisplayMessage(_T("[GlassLoading][FindRawBinFile] Find Path = %s, RetryCount = %d, ResultCode = [%d]"), strFilePath, 30-nReTryTime, GetLastError());
+			//#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER 알람 발생 원인 분석 END
 			VECFINDDATA* pFindData = akFileFinder.getFindData();
 			int nFileNamePos = strlen(akFileFinder.getProcessPath());
 			std::map<LONGLONG, CString> mapSpanFileName;
@@ -2684,6 +2716,7 @@
 					break;
 				}
 			}
+
 			akFileFinder.clear();
 			Sleep(100);
 		}
@@ -3108,7 +3141,7 @@
 					strReadData = pTransferData->strRerferData;
 					break;
 				}
-				m_pSP2P->ISP2P_DisplayMessage(_T("[ReadTransferData] Name: %s, Addr: %s, Size: %d, Data: %s"), pInfo->strName, strReadAddress, nReadSize, strReadData);
+			//	m_pSP2P->ISP2P_DisplayMessage(_T("[ReadTransferData] Name: %s, Addr: %s, Size: %d, Data: %s"), pInfo->strName, strReadAddress, nReadSize, strReadData); //0517
 		}
 	}
 
@@ -4481,7 +4514,7 @@
 
 	SetWsiType(0);
 	WSIAllReadySignal(1);
-	Sleep(500);
+	Sleep(1000);
 	if(!WSIAllStartSignal())
 	{
 		g_pLog->DisplayMessage(_T("[WSI] WSI Start Fail!!"));
@@ -4517,7 +4550,8 @@
 	strPath  = strPath + _T("\\WSI");
 	if(CreateDirectory(strPath,NULL)==FALSE)
 	{
-		g_pLog->DisplayMessage(_T("[MakeWSIUpLoadDirectory]Directory Create Fail %s "),strPath);
+		//LYW LOG추가
+		g_pLog->DisplayMessage(_T("[MakeWSIUpLoadDirectory]Directory Create Fail %s, ERROR CODE = %d "),strPath, GetLastError());
 	}
 	
 }
@@ -4556,8 +4590,10 @@
 
 	VectorDouble vectorCollisionPosX;
 	vectorCollisionPosX.clear();
-	
 
+	//WSI 좌우 겐트리 동시이동 
+	pMotorControl->GantrySetTwoGantrySyncModeSend(1);
+	
 	// WSI result count
 	for (int nModuleIdx = 0; nModuleIdx < Module_GetModuleStatusCount(); nModuleIdx++)
 	{
@@ -4603,8 +4639,6 @@
 				return 0;
 			}
 		}
-		//WSI 좌우 겐트리 동시이동 
-		pMotorControl->GantrySetTwoGantrySyncModeSend(1);
 
 		// get result index
 		int nStartIdx = pWsiResult->GetStartSReviewResultIndex();
@@ -4673,9 +4707,11 @@
 		//보낼 포인트가 있는지 없는지 체크
 		if (vectorPosX.empty() == TRUE)
 		{
-			g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size());
+			//3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error 알람 발생 원인 분석 및 조치 START
+			g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point,TwoGantrySyncMode OFF!"), vectorPosX.size());
 			g_pLog->DisplayMessage(_T("[GantryAutoGo] (%d)Gantry Path Send Fail"), pModuleStatus->GetGantryIndex()); //taek 210128
-
+			pMotorControl->GantrySetTwoGantrySyncModeSend(0);
+			//3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error 알람 발생 원인 분석 및 조치 END
 		}
 		else
 		{
@@ -7711,7 +7747,8 @@
 	pSignalControl->WritePacketData(_T("15100"), sizeof(DVDataPack_CPJT), (short*)&DVData);*/
 }
 
-void CSequenceProcessor_CPJT::MakeDVData2() //210325 kyh FDC 
+//#3358 KYH FDC 데이터 전송 시점 개선 ADD START
+void CSequenceProcessor_CPJT::MakeDVData2()
 {
 
 	const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo();
@@ -7965,8 +8002,6 @@
 	pSignalControl->WritePacketData(_T("16128"), sizeof(nWSI1_PC_HDD_CHECK), (short*)&nWSI1_PC_HDD_CHECK);
 	pSignalControl->WritePacketData(_T("16132"), sizeof(nWSI2_PC_HDD_CHECK), (short*)&nWSI2_PC_HDD_CHECK);
 
-
-
 	pSignalControl->WritePacketData(_T("16136"), sizeof(nReviewVersion), (short*)&nReviewVersion);
 	pSignalControl->WritePacketData(_T("16140"), sizeof(nWSI00Version), (short*)&nWSI00Version);
 	pSignalControl->WritePacketData(_T("16144"), sizeof(nWSI01Version), (short*)&nWSI01Version);
@@ -7974,6 +8009,7 @@
 
 	return;
 }
+//#3358 KYH FDC 데이터 전송 시점 개선 ADD END
 
 DWORD CSequenceProcessor_CPJT::GetDiskUsage()
 {

--
Gitblit v1.9.3