From 572aebd50409d2f11183d6ebbb9d12fe9041e7a5 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 화, 17 8월 2021 18:47:48 +0900 Subject: [PATCH] Ongoing100 #3561 CF AOI Review Align 카메라 끊김 현상 조치 --- ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp | 282 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 198 insertions(+), 84 deletions(-) diff --git a/ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp b/ReviewSystem/M_AutoDiagnosisManager/DiagnosisProcessor.cpp index a70648c..de39519 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(nProcessMode) == 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(nProcessMode) == 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(nProcessMode) == 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(nProcessMode) == 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); - //0412 kyh �옄媛�吏꾨떒 Judge�뙋�젙 - 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(""); - - //0412 kyh Judge 媛믪뿉 �뵲瑜� �븣�엺 諛쒖깮 - 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(DiagnosisMode_All) == FALSE) { + strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); + m_pDP2P->IDP2P_DisplayMessage(0, strMessage); } + //#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 (1500 <= GetTickCount() - stTime) { break; } @@ -292,14 +311,22 @@ } m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE); + //#3514_LYW_CF AOI Review �옄媛�吏꾨떒 湲곕뒫 媛쒖꽑_START + //Sleep(1000); Sleep(1000); + //#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 (11000 <= 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,38 +593,41 @@ { // 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); } - if (nIdx == 0) - { - pResultPoint[nIdx].dPosX = 657.425 - ; - pResultPoint[nIdx].dPosY = 540.14 - ; - } - else if (nIdx == 1) - { - pResultPoint[nIdx].dPosX = 657.425 - ; - pResultPoint[nIdx].dPosY = 2278.636 - ; - } - else if (nIdx == 2) - { - pResultPoint[nIdx].dPosX = 2096.944 - ; - pResultPoint[nIdx].dPosY = 540.141 - ; - } - else if (nIdx == 3) - { - pResultPoint[nIdx].dPosX = 2096.944 - ; - pResultPoint[nIdx].dPosY = 2278.636; - } +// if (nIdx == 0) +// { +// pResultPoint[nIdx].dPosX = 657.425 +// ; +// pResultPoint[nIdx].dPosY = 540.14 +// ; +// } +// else if (nIdx == 1) +// { +// pResultPoint[nIdx].dPosX = 657.425 +// ; +// pResultPoint[nIdx].dPosY = 2278.636 +// ; +// } +// else if (nIdx == 2) +// { +// pResultPoint[nIdx].dPosX = 2096.944 +// ; +// pResultPoint[nIdx].dPosY = 540.141 +// ; +// } +// else if (nIdx == 3) +// { +// pResultPoint[nIdx].dPosX = 2096.944 +// ; +// pResultPoint[nIdx].dPosY = 2278.636; +// } //1. 紐⑦꽣瑜� �씠�룞 @@ -689,6 +735,61 @@ return TRUE; } +int CDiagnosisProcessor::ProcessDiagnosisJudge(int nMode) +{ + 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(""); + if (nMode == DiagnosisMode_All || nMode == DiagnosisMode_Review || nMode == DiagnosisMode_Squareness) + { + 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 (nMode == DiagnosisMode_All || nMode == DiagnosisMode_Wsi) + { + 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; @@ -787,8 +888,21 @@ for (int nIdx = 0; nIdx < nPanelCount; nIdx++) { - const SPositionData* pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx); - const SPositionData* pDataPos = pProcessResult->GetPositionData_Squareness(nIdx); + //LYW 210811 + const SPositionData* pSettingPos; + const SPositionData* pDataPos; + + if (nSelModuleIndex == 1) + { + pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx); + pDataPos = pProcessResult->GetPositionData_Squareness(nIdx + 3); + } + else + { + pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx); + pDataPos = pProcessResult->GetPositionData_Squareness(nIdx); + } + //LYW 210811 if (pSettingPos == NULL || pDataPos == NULL) continue; dMotorPosX[nIdx] = pSettingPos->dPosX; -- Gitblit v1.9.3