From 2bd50ead7f0b92fb9ed5b477b63dea8fbcf8217e Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 월, 19 7월 2021 10:40:50 +0900
Subject: [PATCH] Ongoing60 #3517 CF AOI Review 자가진단 기능 개선

---
 ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp |  207 +++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 151 insertions(+), 56 deletions(-)

diff --git a/ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp b/ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp
index ad4b0c8..e518d50 100644
--- a/ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp
+++ b/ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp
@@ -50,6 +50,8 @@
 {
 	if (pParameter == NULL) return;
 
+	CString strMessage = "";
+
 	CDiagnosisProcessData* pProcessData = static_cast<CDiagnosisProcessData*>(pParameter);
 	int nProcessMode = pProcessData->nProcessMode;
 
@@ -60,20 +62,69 @@
 		m_pManager->m_bProcessAll = true;
 		ProcessAll();
 		break;
+		//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+	case DiagnosisMode_Review :
+		strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_Review START"));
+		m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+
+		m_pManager->m_bProcessAll = false;
+		if (IsCommandStop()) return;
+		m_pDP2P->IDP2P_SetDialogTap(0);
+		ProcessSquareness();
+		Sleep(1000);
+		if (IsCommandStop()) return;
+		m_pDP2P->IDP2P_SetDialogTap(1);
+		ProcessFlatness();
+		Sleep(1000);
+
+		if (ProcessDiagnosisJudge() == FALSE) {
+			strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL"));
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		}
+
+		strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_Review END"));
+		m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+
+		break;
+
+	case DiagnosisMode_Wsi:
+		strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_WSI START"));
+		m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+
+		m_pManager->m_bProcessAll = false;
+		if (IsCommandStop()) return;
+		m_pDP2P->IDP2P_UpdateDialog(7);
+		ProcessWsi();
+		Sleep(1000);
+
+		if (ProcessDiagnosisJudge() == FALSE) {
+			strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL"));
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		}
+
+		strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_WSI END"));
+		m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+
+		break;
 
 	case DiagnosisMode_Squareness:
 		m_pManager->m_bProcessAll = false;
 		ProcessSquareness();
+		Sleep(1000);
+		if (ProcessDiagnosisJudge() == FALSE) {
+			strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL"));
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		}
 		break;
-
-	case DiagnosisMode_Wsi:
-		m_pManager->m_bProcessAll = false;
-		ProcessWsi();
-		break;
-
+		//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
 	case DiagnosisMode_Flatness:
 		m_pManager->m_bProcessAll = false;
 		ProcessFlatness();
+		Sleep(1000);
+		if (ProcessDiagnosisJudge() == FALSE) {
+			strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL"));
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		}
 		break;
 
 	case DiagnosisMode_Flatness_Manual:
@@ -94,6 +145,8 @@
 int CDiagnosisProcessor::ProcessAll()
 {
 	if (IsCommandStop()) return 1;
+
+	CString strMessage = "";
 	
 	m_pDP2P->IDP2P_UpdateDialog(7);//WSI Result 移� 珥덇린�솕 
 	//if (m_pDP2P == NULL) return 0;
@@ -114,53 +167,16 @@
 	m_pDP2P->IDP2P_SetDialogTap(1);
     ProcessFlatness();
 
-	Sleep(2000);
+	//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+	//Sleep(2000);
+	Sleep(1000);
 
-	//#3407 KYH �옄媛�吏꾨떒 Judge �뙋�젙 諛� �븣�엺 諛쒖깮 湲곕뒫 ADD START
-	for (int i = 0; i < 2; i++)
-	{
-		int nSelModuleIndex = i;
-
-		CDiagnosisInfo* pSettingInfo = m_pManager->GetDiagnosisInfo();
-		if (pSettingInfo == NULL) {
-			m_pDP2P->IDP2P_UpdateDialog(4);
-			return 0;
-		}
-
-		CDiagnosisResult* pProcessResult = m_pManager->GetDiagnosisResult_Squareness(nSelModuleIndex); // 0412 kyh 吏곴컖�룄 痢≪젙 紐⑤뱢�뿉 ���븳 寃곌낵�젙蹂�
-		if (pProcessResult == NULL) {
-			m_pDP2P->IDP2P_UpdateDialog(4);
-			return 0;
-		}
-
-		CDiagnosisResult* pProcessWSIResult = m_pManager->GetDiagnosisResult_Wsi(nSelModuleIndex); // 0412 kyh WSI 痢≪젙 紐⑤뱢�뿉 ���븳 寃곌낵 �젙蹂�
-		if (pProcessWSIResult == NULL) {
-			m_pDP2P->IDP2P_UpdateDialog(6);
-			return 0;
-		}
-
-		CString strMessage = _T("");
-
-		double dDate = (90 - pProcessResult->GetGantryDegree());
-		if (abs(dDate) >= abs(pSettingInfo->GetJudgeData_Degree())) // 0412 kyh 吏곴컖�룄�뿉�꽌 �굹�삩 Dgree 媛믪씠 �꽕�젙�븳 Judge 媛믩낫�떎 �겕嫄곕굹 媛숈쓣寃쎌슦
-		{
-			
-			m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // �븣�엺 諛쒖깮
-			strMessage.Format(_T("[Judge Data] [Gantry %d]Diagnosis Error ! GantryDegree[%lf] Judge[%lf]"), i, dDate, pSettingInfo->GetJudgeData_Degree());
-			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
-		}
-
-		if (pProcessWSIResult->getWSI_RTB() >= pSettingInfo->GetJudgeData_3Sigma() || pProcessWSIResult->getWSI_RTB() <= 0) // 0412 kyh WSI �몴以��렪李� 鍮꾧탳
-		{
-			m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // �븣�엺 諛쒖깮
-			strMessage.Format(_T("[Judge Data] [WSI %d]Diagnosis Error ! WSI RTB[%lf] Judge[%lf]"), i, pProcessWSIResult->getWSI_RTB(), pSettingInfo->GetJudgeData_3Sigma());
-			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
-		}
+	if (ProcessDiagnosisJudge() == FALSE) {
+		strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL"));
+		m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
 	}
-	//#3407 KYH �옄媛�吏꾨떒 Judge �뙋�젙 諛� �븣�엺 諛쒖깮 湲곕뒫 ADD END
+	//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
 
-	//而댄뵆由욱듃 �떊�샇 蹂대궡湲�
-	m_pDP2P->IDP2P_DiagnosisSendCompleteSig();
 	m_pManager->m_bProcessAll = false;
 
 	return 1;
@@ -284,7 +300,10 @@
 		int stTime = GetTickCount();
 		while (1)
 		{
-			if (11000 <= GetTickCount() - stTime)
+			//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+			//if (11000 <= GetTickCount() - stTime)
+			//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
+			if (1000 <= GetTickCount() - stTime)
 			{
 				break;
 			}
@@ -292,14 +311,22 @@
 
 		}
 		m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE);
-		Sleep(1000);
+		//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+		//Sleep(1000);
+		Sleep(500);
+		//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
 
 		CString strimagename;
 		strimagename.Format(_T("%s_Module[%d]Index[%d].bmp"), m_pManager->m_strResultImageFileName, nSelModuleIndex, nIdx);
 
+
 		// find mark at panel
 		double dFindPixX = 0., dFindPixY = 0.;
-		if (m_pDP2P->IDP2P_FindPanelCenter(nSelModuleIndex, dFindPixX, dFindPixY, strimagename) == FALSE) continue;
+		if (m_pDP2P->IDP2P_FindPanelCenter(nSelModuleIndex, dFindPixX, dFindPixY, strimagename) == FALSE) {
+			strMessage.Format(_T("[CDiagnosisProcessor] find mark at panel FAIL"));
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+			continue;
+		}
 
 		m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, FALSE);
 
@@ -435,7 +462,10 @@
 		}
 		m_pDP2P->IDP2P_SetWsiManualMeasure(nSelModuleIndex, dXpos, dYpos);
 		// move panel
-		Sleep(2000);
+		//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+		//Sleep(2000);
+		Sleep(1000);
+		//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
 		m_pDP2P->IDP2P_MotorGo(nSelModuleIndex, dXpos, dYpos);
 
 		if (m_pDP2P->IDP2P_IsGantryMotionEnd(nSelModuleIndex) == FALSE)
@@ -447,7 +477,10 @@
 		int stTime = GetTickCount();
 		while (1)
 		{
-			if (10000 <= GetTickCount() - stTime)
+			//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+			//if (10000 <= GetTickCount() - stTime)
+			if (1000 <= GetTickCount() - stTime)
+			//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
 			{
 				break;
 			}
@@ -508,8 +541,18 @@
 {
 	if (m_pDP2P == NULL || m_pManager == NULL) return 0;
 
+	CString strMessage = "";
+
 	CDiagnosisInfo * pSettingInfo = m_pManager->GetDiagnosisInfo();
 	if (pSettingInfo == NULL) return 0;
+	//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+	if (pSettingInfo->GetFlastnessSkipMode() == TRUE) {
+		strMessage.Format(_T("[CDiagnosisProcessor] FlastnessSkipMode!"));
+		m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		return 0;
+	}
+
+	//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
 
 	int nSelModuleIndex = m_pDP2P->IDP2P_GetSelectedModuleIndex();
 	int nFlatnessMode = pSettingInfo->GetFlatnessMode();
@@ -550,7 +593,10 @@
 		{
 			// AF Home
 			m_pDP2P->IDP2P_AFMHomePosition(0);
-			Sleep(5000);
+			//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START
+			//Sleep(5000);
+			Sleep(1000);
+			//#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_END
 			m_pDP2P->IDP2P_SetAFMTracking(0, TRUE);
 			Sleep(500);
 		}
@@ -689,6 +735,55 @@
 	return TRUE;
 }
 
+int CDiagnosisProcessor::ProcessDiagnosisJudge()
+{
+	for (int i = 0; i < 2; i++)
+	{
+		int nSelModuleIndex = i;
+
+		CDiagnosisInfo* pSettingInfo = m_pManager->GetDiagnosisInfo();
+		if (pSettingInfo == NULL) {
+			m_pDP2P->IDP2P_UpdateDialog(4);
+			return 0;
+		}
+
+		CDiagnosisResult* pProcessResult = m_pManager->GetDiagnosisResult_Squareness(nSelModuleIndex); // 0412 kyh 吏곴컖�룄 痢≪젙 紐⑤뱢�뿉 ���븳 寃곌낵�젙蹂�
+		if (pProcessResult == NULL) {
+			m_pDP2P->IDP2P_UpdateDialog(4);
+			return 0;
+		}
+
+		CDiagnosisResult* pProcessWSIResult = m_pManager->GetDiagnosisResult_Wsi(nSelModuleIndex); // 0412 kyh WSI 痢≪젙 紐⑤뱢�뿉 ���븳 寃곌낵 �젙蹂�
+		if (pProcessWSIResult == NULL) {
+			m_pDP2P->IDP2P_UpdateDialog(6);
+			return 0;
+		}
+
+		CString strMessage = _T("");
+
+		double dDate = (90 - pProcessResult->GetGantryDegree());
+		if (abs(dDate) >= abs(pSettingInfo->GetJudgeData_Degree())) // 0412 kyh 吏곴컖�룄�뿉�꽌 �굹�삩 Dgree 媛믪씠 �꽕�젙�븳 Judge 媛믩낫�떎 �겕嫄곕굹 媛숈쓣寃쎌슦
+		{
+
+			m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // �븣�엺 諛쒖깮
+			strMessage.Format(_T("[Judge Data] [Gantry %d]Diagnosis Error ! GantryDegree[%lf] Judge[%lf]"), i, dDate, pSettingInfo->GetJudgeData_Degree());
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		}
+
+		if (pProcessWSIResult->getWSI_RTB() >= pSettingInfo->GetJudgeData_3Sigma() || pProcessWSIResult->getWSI_RTB() <= 0) // 0412 kyh WSI �몴以��렪李� 鍮꾧탳
+		{
+			m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // �븣�엺 諛쒖깮
+			strMessage.Format(_T("[Judge Data] [WSI %d]Diagnosis Error ! WSI RTB[%lf] Judge[%lf]"), i, pProcessWSIResult->getWSI_RTB(), pSettingInfo->GetJudgeData_3Sigma());
+			m_pDP2P->IDP2P_DisplayMessage(0, strMessage);
+		}
+	}
+	//#3407 KYH �옄媛�吏꾨떒 Judge �뙋�젙 諛� �븣�엺 諛쒖깮 湲곕뒫 ADD END
+
+	//而댄뵆由욱듃 �떊�샇 蹂대궡湲�
+	m_pDP2P->IDP2P_DiagnosisSendCompleteSig();
+	return 1;
+}
+
 BOOL CDiagnosisProcessor::CalculateSquareness(int nIndex)
 {
 	if (m_pDP2P == NULL || m_pManager == NULL) return 0;

--
Gitblit v1.9.3