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