From 9ad2aa59da822e9d30c5e0cd677025fe6e12df95 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 화, 09 11월 2021 17:37:17 +0900 Subject: [PATCH] Ongoing90 #3662 CF AOI Review 전설비 알람 발생 조치 --- ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp | 1060 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 607 insertions(+), 453 deletions(-) diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp index c50b3f2..4b3b22e 100644 --- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp +++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp @@ -51,7 +51,7 @@ #define AOIRAWBIN_NETWORK_DRIVE_PATH "Y:\\RawBin" enum CPJT_MeasureMode { CPJT_ModeAuto = 0, CPJT_ModeManual }; -// [2017:4:18]-[WEZASW] : WSI Module 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占?PlanType 占쏙옙호 占쏙옙占쏙옙. +// [2017:4:18]-[WEZASW] : WSI Module enum CPJT_PlanType { CPJT_PlanReview = 0, CPJT_PlanUser, CPJT_PlanWSI, CPJT_PlanMeasure, CPJT_PlanReflow, CPJT_PlanWsiReflow, CPJT_PlanWsiUser,CPJT_PlanWsiMultiShot }; enum CPJT_InsepectionType{REVIEW_REFLOW = 0, WSI_REFLOW, REV_WSI,WSIUSER, USER,WSIMULTISHOT}; @@ -169,7 +169,7 @@ CDitGlassRawClient* pDitGlassRaw = CDitGlassRawClient::GetInstance(); if(pDitGlassRaw->ConnectServer() == FALSE) { - g_pLog->DisplayMessage(_T("占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙!(Shared memory Access Fail)")); + g_pLog->DisplayMessage(_T("(Shared memory Access Fail)")); } } @@ -183,17 +183,15 @@ EnterCriticalSection(&m_csProcessStatus); BOOL bReturn = FALSE; - - // 占쏙옙占쏙옙 占쏙옙占승곤옙 占쏙옙占쏙옙 占쏙옙占승울옙 占쌕몌옙占쏙옙? //if (nProcessStatus!=m_nProcessStatus || nProcessStatus==0) if (1)//nProcessStatus!=m_nProcessStatus || nProcessStatus==0) { - //if (nProcessStatus==0) // 占십깍옙(0) 占쏙옙占쏙옙占싱몌옙.. + //if (nProcessStatus==0) //{ // bReturn = TRUE; //} - // else if (nProcessStatus==(m_nProcessStatus+1)) // 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙(+1)占싱몌옙.. + // else if (nProcessStatus==(m_nProcessStatus+1)) // { // bReturn = TRUE; // } @@ -204,9 +202,8 @@ // bReturn = FALSE; //} - if (bReturn) // 占쏙옙占쏙옙占싱몌옙... + if (bReturn) { - // Thread 占쏙옙占쏙옙 占쏙옙 Thread 占쏙옙占쏙옙 CSequenceProcessData* pThreadData = new CSequenceProcessData(this); if (pThreadData) { @@ -227,7 +224,6 @@ } } else if(nProcessStatus==2){ - // Thread 占쏙옙占쏙옙 占쏙옙 Thread 占쏙옙占쏙옙 CSequenceProcessData* pThreadData = new CSequenceProcessData(this); if (pThreadData) { @@ -277,7 +273,6 @@ CReviewResult* pWsiResult = pGlassResult->GetWsiResult(nModuleIndex); if (pWsiResult==NULL) goto RESULT_FAIL; - // 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占승댐옙. int nCurResultIdx = pWsiResult->GetLastSReviewResultIndex() + 1; // last index + 1 int nStartResultIdx = pWsiResult->GetStartSReviewResultIndex(); int nEndResultIdx = pWsiResult->GetEndSReviewResultIndex(); @@ -291,13 +286,11 @@ int nMPosY = int(pPosition->dMotorPosY * 1000.0); double dTime = (double) m_ProcessTimer.GetDurationMilliSecond(); - // 占싸듸옙占쏙옙占쏙옙 占쌕몌옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. if (measureResut.nResultIndex != nCurResultIdx) { goto RESULT_FAIL; } - // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙. // measureResut if(pWsiResult->GetSReviewResultCount() == 0) return ; @@ -324,7 +317,6 @@ // set last result idx pWsiResult->SetLastSReviewResultIndex(nCurResultIdx); - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 占쌉곤옙, WSI 占쏙옙占쏙옙占?占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙... if(nCurResultIdx==nEndResultIdx && nCurResultIdx<=pWsiResult->GetSReviewResultCount()) { nStartResultIdx = nCurResultIdx + 1; @@ -335,8 +327,7 @@ pWsiResult->SetStartSReviewResultIndex(nStartResultIdx); pWsiResult->SetEndSReviewResultIndex(nEndResultIdx); - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. - ::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙. + ::Sleep(3000); // Process_RemainWsiPoint(nModuleIndex); } @@ -362,7 +353,6 @@ CReviewResult* pWsiResult = pGlassResult->GetWsiUserResult(nModuleIndex); if (pWsiResult==NULL) goto RESULT_FAIL; - // 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占승댐옙. int nCurResultIdx = pWsiResult->GetLastSReviewResultIndex() + 1; // last index + 1 int nStartResultIdx = pWsiResult->GetStartSReviewResultIndex(); int nEndResultIdx = pWsiResult->GetEndSReviewResultIndex(); @@ -376,13 +366,11 @@ int nMPosY = int(pPosition->dMotorPosY * 1000.0); double dTime = (double) m_ProcessTimer.GetDurationMilliSecond(); - // 占싸듸옙占쏙옙占쏙옙 占쌕몌옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. if (measureResut.nResultIndex != nCurResultIdx) { goto RESULT_FAIL; } - // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙. // measureResut if(pWsiResult->GetSReviewResultCount() == 0) return ; @@ -407,7 +395,6 @@ // set last result idx pWsiResult->SetLastSReviewResultIndex(nCurResultIdx); - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 占쌉곤옙, WSI 占쏙옙占쏙옙占?占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙... if(nCurResultIdx==nEndResultIdx && nCurResultIdx<=pWsiResult->GetSReviewResultCount()) { nStartResultIdx = nCurResultIdx + 1; @@ -418,8 +405,7 @@ pWsiResult->SetStartSReviewResultIndex(nStartResultIdx); pWsiResult->SetEndSReviewResultIndex(nEndResultIdx); - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. - ::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙. + ::Sleep(3000); // Process_RemainWsiPoint(nModuleIndex); } @@ -442,6 +428,8 @@ g_pLog->DisplayMessage(_T("[AlignResult] Glass Result is NULL!")); SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Signal!")); + + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 return; } @@ -449,7 +437,6 @@ CAlignResult *pAlignResult = &pGlassResult->m_AlignResult; CAlignRecipe *pAlignRecipe = &pGlassResult->m_AlignRecipe; - // 占쏙옙占쏙옙占?占쌘듸옙占쏙옙占쏙옙 占쏙옙占?占쏙옙占쏙옙占실울옙 占쏙옙占쏙옙占쏙옙占쏙옙. CRsRcpAlignInfo *pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); if (pRsRcpAlignInfo!=NULL && pRsRcpAlignInfo->m_bAutoProcess) { @@ -463,25 +450,21 @@ pRsRcpAlignInfo->m_dSecondCamExposure = pCurAlignResult->dExposureTime[1]; } - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙타 占쏙옙占쏙옙 //m_pDoc->Recipe_WriteRecipeFile(); } BOOL bLastAlignResult = FALSE; CCoordCalibrator *pCoordCalibrator = m_pSP2P->ISP2P_GetCoordCalibrator(); - // 占쏙옙占쏙옙 占쏙옙占쏙옙占?占쏙옙占?. if (pCoordCalibrator && pCurAlignResult->nResultCode==Align_Success) { g_pLog->DisplayMessage(_T("[AlignResult] Align Find Success!")); - // 占쏙옙占쏙옙占?占쏙옙占?占쌜띰옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 *pAlignResult = *pCurAlignResult; pCoordCalibrator->SetFirstMarkPos(pAlignResult->dFindPositionX[0], pAlignResult->dFindPositionY[0], pAlignRecipe->dGlassPositionX[0], pAlignRecipe->dGlassPositionY[0]); pCoordCalibrator->SetSecondMarkPos(pAlignResult->dFindPositionX[1], pAlignResult->dFindPositionY[1], pAlignRecipe->dGlassPositionX[1], pAlignRecipe->dGlassPositionY[1]); - // 占쏙옙占쏙옙 占쏙옙占? if(pCoordCalibrator->CalculateAlignResult() == TRUE) { sAlignResult = pCoordCalibrator->GetAlignResult(); @@ -490,38 +473,35 @@ bLastAlignResult = !pAlignRecipe->bRotateProcess; } - // 占쌜띰옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 CCameraControlAlign *pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); SThetaMotorInfo* pThetaMotorInfo = m_pSP2P->ISP2P_GetThetaMotorInfo(); CMotorControl* pMotorControl = m_pSP2P->ISP2P_GetMotorControl(); if (pAlignRecipe->bRotateProcess && pAlignCameraControl && pMotorControl && pThetaMotorInfo) { - if (fabs(sAlignResult.dDegree) <= pAlignRecipe->dGlassAngleMin) // 占쏙옙占쏙옙 占쌜띰옙 占쏙옙占쏙옙占쏙옙 占쌍소곤옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 + if (fabs(sAlignResult.dDegree) <= pAlignRecipe->dGlassAngleMin) { bLastAlignResult = TRUE; g_pLog->DisplayMessage(_T("[AlignResult] Success! Last Glass Angle : %.8lf degree, Retry Count : %d ea"), sAlignResult.dDegree, pCurAlignResult->nFindCount); } - else if (fabs(sAlignResult.dDegree) > pAlignRecipe->dGlassAngleMax) // 占쏙옙占쏙옙 占쌜띰옙 占쏙옙占쏙옙占쏙옙 占쌍대각占쏙옙占쏙옙 크占쏙옙 占쏙옙占쏙옙 + else if (fabs(sAlignResult.dDegree) > pAlignRecipe->dGlassAngleMax) { bLastAlignResult = FALSE; g_pLog->DisplayMessage(_T("[AlignResult] FAIL! Last Glass Angle : %.8lf degree, Retry Count : %d ea"), sAlignResult.dDegree, pCurAlignResult->nFindCount); } - else if (pCurAlignResult->nFindCount < pAlignRecipe->nRetryCount) // 占썹보占쏙옙 횟占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 횟占쏙옙 占쏙옙占쏙옙占싱몌옙 占썹보占쏙옙 占쏙옙占쏙옙 + else if (pCurAlignResult->nFindCount < pAlignRecipe->nRetryCount) { g_pLog->DisplayMessage(_T("[AlignResult] Current Glass Angle : %.8lf degree, Retry Count : %d ea"), sAlignResult.dDegree, pCurAlignResult->nFindCount); - // 占쏙옙占싶뤄옙 占쏙옙占쏙옙 占쏙옙占쏙옙.. double dCalAngle = sAlignResult.dDegree; dCalAngle = pThetaMotorInfo->dPosition - dCalAngle ; g_pLog->DisplayMessage(_T("[AlignResult] Move Rotate Glass Angle : %.8lf degree"), dCalAngle); pMotorControl->AxisThetaManualGoEnd(dCalAngle); ::Sleep(100); - // 占쏙옙占쏙옙占?ReProcess if (pAlignCameraControl->AlignProcess()) { g_pLog->DisplayMessage(_T("[AlignResult] Align Find Process ReStarted!")); @@ -556,8 +536,7 @@ //m_pView->SetAlignResult(pAlignResult->nResultCode, sAlignResult.dOriginX, sAlignResult.dOriginY, sAlignResult.dDegree); } - // PCControl 占쏙옙占쏙옙占?占쏙옙호 占쏙옙占쏙옙. - if (bLastAlignResult) // 占쏙옙占쏙옙 占쏙옙占쏙옙寬占쏙옙... + if (bLastAlignResult) { SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Success Data!")); @@ -567,6 +546,8 @@ SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!")); } + + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 蹂�寃� SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); @@ -687,15 +668,14 @@ SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); + //LONGREUN + //RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, 4); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_None, nPlanIndex); - - //占쏙옙占쏙옙占? AFM_SetAFMTracking(FALSE); return; } - //190727 chm WSI 占쏙옙占쏙옙占?End 체크 占쏙옙 占쏙옙占쏙옙 if(nBeforePlanIndex== CPJT_PlanWSI||nBeforePlanIndex== CPJT_PlanWsiReflow||nBeforePlanIndex== CPJT_PlanWsiUser) { if(pPlanInfo->m_nReviewType == CPJT_PlanWSI ||pPlanInfo->m_nReviewType == CPJT_PlanWsiReflow||pPlanInfo->m_nReviewType== CPJT_PlanWsiUser || pPlanInfo->m_nReviewType == CPJT_PlanWsiMultiShot) @@ -724,13 +704,12 @@ } } - //190727 chm WSI type 占쏙옙占쏙옙占쏙옙 Review 占시뤄옙占쏙옙 占쏙옙占쏙옙占?카占쌨띰옙 占쌜띰옙 占쌜울옙 占쏙옙占쏙옙占쏙옙痢?占쏙옙占쏙옙... if(nBeforePlanIndex== CPJT_PlanWSI ||nBeforePlanIndex== CPJT_PlanWsiReflow||nBeforePlanIndex== CPJT_PlanWsiUser) { if( pPlanInfo->m_nReviewType == CPJT_PlanReview|| pPlanInfo->m_nReviewType == CPJT_PlanUser|| pPlanInfo->m_nReviewType == CPJT_PlanMeasure|| pPlanInfo->m_nReviewType == CPJT_PlanReflow) { - CTotalPitchMeasure* pTotapPithMeasure = m_pSP2P->ISP2P_GetTotalPitchMeasure(); // 占쏙옙占쏙옙占쏙옙占? 20190730 chm 占쏙옙占쌩울옙 占쌉쇽옙占쏙옙 占쏙옙占쏙옙.... + CTotalPitchMeasure* pTotapPithMeasure = m_pSP2P->ISP2P_GetTotalPitchMeasure(); const CMotorControlInfo* pSystemMotorInfo = m_pSP2P->ISP2P_System_GetMotorInfo(); if(pSystemMotorInfo !=NULL) @@ -774,8 +753,6 @@ if(pPlanInfo == NULL) continue; //210325 - //END 占쏙옙 占쏙옙琯占쏙옙占?占실억옙占쏙옙占쏙옙占쏙옙占?占쌔댐옙 占쌉쇽옙占쏙옙 占쏙옙占쏙옙占쏙옙占?占쏙옙占싣곤옙占쏙옙 占쌍억옙 start 占쌉쇽옙占쏙옙 타占쏙옙占쏙옙 - //占쌓것울옙 占쏙옙占쏙옙 占쏙옙占쏙옙처占쏙옙 if (GetProcessStatus() == ProcessReviewEnd_CPJT || GetProcessStatus() == ProcessReviewUnloding_CPJT) { g_pLog->DisplayMessage(_T("[ProcessStop] StartProcessing Sequence Stop Status : %d"), GetProcessStatus()); @@ -788,7 +765,7 @@ if (( nTotalCount += pGlassResult->GetTotalSReviewResultCount()) > 0) { m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] Review Plan Start!")); - //LYW DCOLL 임시조치 + //LYW DCOLL 占쌈쏙옙占쏙옙치 CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); if (pDitRawClient->isConnect() == TRUE) { @@ -801,7 +778,7 @@ strcpy(pSharedDefectReview->m_strRevImageName, ""); } - //LYW DCOLL 임시조치 + //LYW DCOLL 占쌈쏙옙占쏙옙치 ::Sleep(nWaitTime); m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone(); bExcute = ReviewStartProcessing(pGlassResult, nPlanIdx); @@ -830,7 +807,7 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] WSI Plan End!")); } break; - //占싱삼옙占? + case CPJT_PlanMeasure: if (( nTotalCount += pGlassResult->GetTotalSMeasureResultCount()) > 0) { @@ -902,19 +879,27 @@ CSequenceProcessData* pProcessData = static_cast<CSequenceProcessData*>(pParameter); m_nProcessStatus = pProcessData->nProcessStatus; + //LONGREUN + //SetSimulationMode(TRUE); switch(pProcessData->nProcessStatus) { case ProcessLoading_CPJT: Process_Loading(); + //LONGREUN + //RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, 2); break; case ProcessAlignStart_CPJT: Process_AlignStart(); + //LONGREUN + //RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, 3); break; case ProcessReadRawFile_CPJT: Process_ReadRawFile(); + //LONGREUN + //RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, 1); break; @@ -924,12 +909,20 @@ case ProcessReviewEnd_CPJT: Process_ReviewEnd(); + //LONGREUN + //RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, 5); + break; case ProcessReviewUnloding_CPJT: Process_ReviewUnloading(); + //LONGREUN + //RecvSignalToSignalControl(PCControlRecvSignalIndex_Seq, 0); break; } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 ADD START + SetSimulationMode(FALSE); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 ADD END return; } @@ -939,20 +932,30 @@ AllAckSignalOff(); m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone(); - SetCheckWSIEnd(-1); //190726 wsiend체크 占십깍옙화 - SetWsiType(-1); //wsi reflow 타占쏙옙 占쏙옙占쏙옙 占십깍옙화 + SetCheckWSIEnd(-1); //190726 + SetWsiType(-1); //wsi reflow SetLastPointCheck(FALSE); bFileFind = FALSE; - m_pSP2P->ISP2P_GetDiagnosisHistory(); + /*< LYW 20211109 - #3662 Delete Start >*/ + //m_pSP2P->ISP2P_GetDiagnosisHistory(); + /*< LYW 20211109 - #3662 Delete End >*/ m_pSP2P->ISP2P_SetFirstReviewLeft(TRUE); m_pSP2P->ISP2P_SetFirstReviewRight(TRUE); - - if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //Original +// if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); + // read config file if(!m_pSP2P->ISP2P_System_ReadConfigFile()) m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor] System Value Loading FAIL!")); @@ -970,18 +973,18 @@ } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Glass Result Count : %d ea"), nGlassResultCount); - pGlassResult->ResetDefocusCount();//占싸듸옙 占싸분울옙占쏙옙 defocus count 占십깍옙화 190821 chm + pGlassResult->ResetDefocusCount(); CTime time = CTime::GetCurrentTime(); pGlassResult->m_strResultDate.Format(_T("%04d.%02d.%02d"), time.GetYear(), time.GetMonth(), time.GetDay()); - //if(Revolver_SetGoHome(0)) // 占쏙옙占쏙옙占쏙옙 HOME 占쏙옙占쏙옙占쏙옙 + //if(Revolver_SetGoHome(0)) //{ // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Revolver Set GoHome Success!")); //} - //#3357 KYH Align Image 占십깍옙화 ADD START + //#3357 KYH Align Image ADD START CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); if (pAlignCameraControl != NULL) { @@ -989,7 +992,7 @@ g_pLog->DisplayMessage(_T("[Align] Align Image Clear")); } - //#3357 KYH Align Image 占십깍옙화 ADD END + //#3357 KYH Align Image ADD END // get transfer data int nResultCode = 0; @@ -1016,13 +1019,20 @@ if (pDitRawClient->isConnect()==FALSE) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占썹연占쏙옙 占시듸옙 ")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] DitRawClient Connect Fail ")); int nReconnect=0; while (1) { if (nReconnect == 3) { - SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original + /*SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);*/ m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); break; @@ -1031,11 +1041,11 @@ Sleep(1000); if (pDitRawClient->isConnect() == FALSE) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 Count[%d]"), nReconnect); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]DitRawClient Connect Fail Count[%d]"), nReconnect); } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]DitRawClient Connect Success")); break; } nReconnect += 1; @@ -1045,9 +1055,9 @@ } - // #3381 LYW CF AOI Review 占쏙옙占쏙옙占쏙옙 FDC TackTime 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 ADD START + // #3381 LYW CF AOI Review FDC TackTime ADD START pDitRawClient->GetGlassData()->m_tmReviewLoading = CTime::GetCurrentTime(); - // #3381 LYW CF AOI Review 占쏙옙占쏙옙占쏙옙 FDC TackTime 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 ADD END + // #3381 LYW CF AOI Review FDC TackTime ADD END CString strGlassIDTemp = NULL; @@ -1065,11 +1075,20 @@ strFileName.Format(_T("%s_%s"), strGlassIDTemp, strGlassStepIdTemp); - //업데이트시 + //占쏙옙占쏙옙占쏙옙트占쏙옙 - //bFileFind = FindRawBinFile(strFileName); - bFileFind = TRUE; - + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + bFileFind = FindRawBinFile(strFileName); + } + else + { + bFileFind = TRUE; + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original + /*bFileFind = FindRawBinFile(strFileName);*/ pDitRawClient->SetReviewStart(); Sleep(1000); @@ -1114,7 +1133,7 @@ } } - //// 190725 占쏙옙占쏙옙占?占쏙옙청占쏙옙占쏙옙 chm ASCEND 占쏙옙 alarm + //// 190725 chm ASCEND alarm const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); const CRcpSortingInfo *pSortingInfo = pRsRcpReviewInfo->GetRcpReviewSortInfo(); @@ -1131,7 +1150,7 @@ - ////占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占싫깍옙 190618 + ////190618 if(GetUseAfmHomePosition()) { g_pLog->DisplayMessage(_T("[AFM] AFM Home Position Start!!!")); @@ -1140,7 +1159,6 @@ } - //占쏙옙占쏙옙占쌨몌옙 커占쏙옙占?占쏙옙占쏙옙 占쏙옙타트(占쌜띰옙 占싸듸옙) CDitGlassRawClient* pDitSharedGlassRaw = CDitGlassRawClient::GetInstance(); if (pDitSharedGlassRaw->isConnect() == FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[DitGlassRawClient] Shared Memory Connect Fail")); @@ -1175,25 +1193,42 @@ // review camera stop ReviewCamera_CameraControl(CameraControlStop); - //AlignCamera_CameraControl(CameraControlLive); + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 - // send signal to plc - if (nResultCode==0) - { - SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); - } - else - { - SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); - } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + // send signal to plc + if (GetSimulationMode() == FALSE) + { + if (nResultCode == 0) + { + SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); + } + else + { + SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); + } + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// send signal to plc +// if (nResultCode==0) +// { +// SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); +// } +// else +// { +// SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); +// } // send cell data to review processorm_pDitGlass CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor(); if(pReviewProcessor == NULL) return ; pReviewProcessor->SetCellData(pGlassResult); - pReviewProcessor->SetReviewCount(0); // 占쏙옙占쏙옙 Sequence No 占십깍옙화. + pReviewProcessor->SetReviewCount(0); pReviewProcessor->SetPlanReviewCount(0); pReviewProcessor->SetPlanWSICount(0); // Process Status Update @@ -1215,8 +1250,16 @@ m_pSP2P->ISP2P_UpdateDefectFilter(pDefectFilter); } - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::OUT] Loading!")); @@ -1232,17 +1275,57 @@ { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] AlignStart!")); - if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); - //Sleep(400);//占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占?占쌍깍옙 chm190602 + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + + //#3561 210908 LYW ADD Start + int nAlignReconnectRetryMaxCount = 3; + for (int i = 0; i < nAlignReconnectRetryMaxCount; i++) + { + if (AlignCamera_CameraControl(CameraControlLive) == FALSE) + { + m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Fail! Reconect Start! ReconnectRetry count = %d"), nAlignReconnectRetryMaxCount + 1); + system("netsh interface set interface name = \"Align #1\" admin = disable&& netsh interface set interface name = \"Align #1\" admin = enable&& netsh interface set interface name = \"Align #2\" admin = disable&& netsh interface set interface name = \"Align #2\" admin = enable"); + Sleep(10000); + m_pSP2P->ISP2P_InitAlignCamera(); + } + + else + { + m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Success! ")); + break; + } + + } + //#3561 210908 LYW ADD End + + Sleep(300); + + //original +// if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); // 1. get current glass result CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); - if (pGlassResult==NULL) { return; } + if (pGlassResult==NULL) + { + Sleep(350); + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 + return; + } const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); - if(pRsRcpAlignInfo == NULL) return; - + if (pRsRcpAlignInfo == NULL) + { + Sleep(350); + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 + return; + } // 2. get align camera control CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); @@ -1250,23 +1333,48 @@ if(pRsRcpAlignInfo->m_bAlignSkipMode) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Align Skip Mode !!!!!!!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + } + //original +// SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); - SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); + Sleep(350); + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 } else { - // 190710 SJB Align Camera Disconnect Check, Align Step 占쏙옙占쏙옙 占쏙옙占쏙옙 확占쏙옙占싼댐옙. + // 190710 SJB Align Camera Disconnect Check, Align Step if(pAlignCameraControl) { if(pAlignCameraControl->AlignCameraDisconnectCheck() == FALSE) { - SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!")); } } + else + { + Sleep(350); + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 + } if (pGlassResult && pAlignCameraControl && pAlignCameraControl->AlignProcess()) { @@ -1274,16 +1382,26 @@ } else { - //占쏙옙占쏙옙占쌩듸옙 Sleep(1000); - //TEST 占쏙옙占? { - SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); - } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); + } + Sleep(350); + AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence 占쏙옙占쏙옙 //占쌍쇽옙 풀占쏙옙 // 4. send align fail signal to plc @@ -1291,7 +1409,7 @@ //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!")); //SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); - } + } } @@ -1313,21 +1431,36 @@ m_pSP2P->ISP2P_GetSignalControl()->WriteData(_T("17110"), sizeof(pDitRawClient->GetGlassData()->m_strGlassJudge), pDitRawClient->GetGlassData()->m_strGlassJudge); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReadRawFile!")); - if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT)) - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT)) + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT)) +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!")); if (bFileFind == FALSE) { - SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] 占쏙옙占쏙옙占쏙옙占?찾占쏙옙 占쏙옙占쏙옙")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail")); return; } // get current glass result CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); if (pGlassResult==NULL) return; - - //占쏙옙占쏙옙占쌨몌옙 커占쏙옙占?占쏙옙占쏙옙 占쏙옙타트(占쌜띰옙 占싸듸옙) + CDitGlassRawClient* pDitSharedGlassRaw = CDitGlassRawClient::GetInstance(); if(pDitSharedGlassRaw->isConnect() == FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[DitGlassRawClient] Shared Memory Connect Fail")); @@ -1354,20 +1487,26 @@ int nTotalPlanCount = CalculatePlanData(pGlassResult); m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount); - //占쏙옙占쏙옙占쌩듸옙 Sleep(1000); // send review ready - SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); } else { processTimer.End(); m_pSP2P->ISP2P_DisplayMessage(_T("[ReadRawFile] AOI Result File Read Fail![%.3f ms]"), processTimer.GetDurationMilliSecond()); - - //占쌓쏙옙트 占쏙옙占? //{ // // send review ready // SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); @@ -1375,7 +1514,6 @@ // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); //} - //占쌍쇽옙 占쏙옙占쏙옙 int nCurPlanIndex = 0; CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if(pRsRcpReviewInfo) @@ -1390,15 +1528,21 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount); // send review ready - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); } } } } - //// [2017:5:24]-[WEZASW] : Review Image Upload Dir 占쏙옙占쏙옙.(FTPUploader占쏙옙占쏙옙 占쌘듸옙 占쏙옙占쏙옙 占실댐옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占?占쏙옙占쏙옙) - //// '占쌥븝옙占싯삼옙'占쏙옙 FTPUploader占쏙옙占쏙옙 占쏙옙占싸듸옙 占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 PCControl Glass Unloading 占쏙옙 占쏙옙占?Loading占쏙옙 Review占쏙옙占쏙옙占쏙옙 占쏙옙占싸듸옙 占쏙옙占?GlassID) 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); CString strPath = _T(""); //if(pNetworkInfo && pNetworkInfo->m_strUploadImagePath.IsEmpty() == FALSE) @@ -1412,8 +1556,6 @@ CFileFind Uploadfile, RTMSUploadPath; if (CDitGlassRawClient::GetInstance()->GetGlassData() == NULL) return; - - //占쏙옙占싸듸옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌕쏙옙 占쏙옙占싸듸옙 占쏙옙占?Set 20190917chm if(Uploadfile.FindFile(strPath)==FALSE) { CTime tmServerLoadingTime = CDitGlassRawClient::GetInstance()->GetGlassData()->m_tmGlassLoading; @@ -1421,10 +1563,6 @@ CreateDirectory(strPath, NULL); pReviewProcessor->SetUploadImagePath(strPath); - - - - //taek 210126 rtms 占쏙옙占쏙옙占?占싱뱄옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 CreateDirectory(pReviewProcessor->GetRTMSUploadImagePath(),NULL); } @@ -1441,9 +1579,16 @@ SetLastPointCheck(FALSE); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] %d Tick Count"), dwTime); - - if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT)) - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT)) + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT)) +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!")); const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); if(pRsRcpAlignInfo == NULL) return; @@ -1470,10 +1615,10 @@ // _grmCellData* pCellData = pDitRawClient->GetCellData(0); // if(pCellData) // { - // // pCellData->m_nTotalPitchData[0] = int(pTotapPithMeasure->GetTotalPitchBD() * 1000); // 占쏙옙占쏙옙, 占쌜억옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 - // // pCellData->m_nTotalPitchData[1] = int(pTotapPithMeasure->GetTotalPitchAC() * 1000); // 占쏙옙占쏙옙, 占쌜억옙占쏙옙 占쏙옙占쏙옙 占싣뤄옙占쏙옙 - // // pCellData->m_nTotalPitchData[2] = int(pTotapPithMeasure->GetTotalPitchAB() * 1000); // 占쏙옙占쏙옙, 占쌜억옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 - // // pCellData->m_nTotalPitchData[3] = int(pTotapPithMeasure->GetTotalPitchCD() * 1000); // 占쏙옙占쏙옙, 占쌜억옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 + // // pCellData->m_nTotalPitchData[0] = int(pTotapPithMeasure->GetTotalPitchBD() * 1000); + // // pCellData->m_nTotalPitchData[1] = int(pTotapPithMeasure->GetTotalPitchAC() * 1000); + // // pCellData->m_nTotalPitchData[2] = int(pTotapPithMeasure->GetTotalPitchAB() * 1000); + // // pCellData->m_nTotalPitchData[3] = int(pTotapPithMeasure->GetTotalPitchCD() * 1000); // } // } // } @@ -1481,7 +1626,6 @@ // { // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor] TotalPitchMeasure Result Fail!")); - // // 190711 SJB, TotalPitchMeasure Fail占시울옙 占쌕뤄옙 Motor占쏙옙 占쏙옙占쏙옙占?占쏙옙占쏙옙占쏙옙 占쏙옙占쌕댐옙 Motion Enable 占쏙옙호占쏙옙 확占쏙옙占쏙옙占쏙옙 // // if(!pTotapPithMeasure->GetMotorEnable()) // { @@ -1507,15 +1651,23 @@ if(FirstReviewPlanStart() <= 0) { //Sleep(1000); - SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); } else { - //占쏙옙占쏙옙占쌩듸옙 + //Sleep(1000); - //Test占쏙옙占? //SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); //SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); @@ -1533,14 +1685,26 @@ { 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!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT)) + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// 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) + 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) { @@ -1555,16 +1719,22 @@ } m_pDitGlassRaw->GetGlassData()->m_nReviewNum = m_pSP2P->ISP2P_GetReviewProcessor()->GetPlanReviewCount(); - //SendDVDataToSignalControl();// 占싫억옙占쏙옙 - - //OverTime 占쌩삼옙占쏙옙 占쏙옙占쏘에占쏙옙 END ACK占쏙옙 占쏙옙摸占쏙옙째占?占싣니띰옙 占쏙옙 Conplete占쏙옙 占쏙옙摸占쏙옙占? - //占쏙옙 ... 占쏙옙占쏙옙 占쏙옙占쏙옙占싸듸옙占싹댐옙 占쌩곤옙 + //SendDVDataToSignalControl(); if (GetLastPointCheck() == FALSE) { - SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END + //original +// SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); } CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); @@ -1585,10 +1755,8 @@ m_pSP2P->ISP2P_GetWSIControl(0)->SendWsiAfmSafePosMove(); m_pSP2P->ISP2P_GetWSIControl(1)->SendWsiAfmSafePosMove(); } - // 占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙占쏙옙 Review占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 if(m_pDitGlassRaw->isConnect()==FALSE) WriteRawData(pGlassResult); - //占쏙옙占쏙옙커占쏙옙 占싯띰옙 send 20190819chm if(pGlassResult->m_nDeFocusCount >0) { SendSignalToSignalControl(PCControlSendSignalIndex_State,PCControlSend_Defoucs,1000); @@ -1598,41 +1766,51 @@ CString strTime = _T(""); strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); - CDlgDefocusList::GetInstance()->SetDefocusTotalCount(pGlassResult->m_nDeFocusCount);//占쏙옙탈 카占쏙옙트 Add - CDlgDefocusList::GetInstance()->SetDefocusData(strTime,pGlassResult->m_strGlassID,pGlassResult->m_nDeFocusCount);//ui 占쌩곤옙占쏙옙 占쏙옙占쏙옙 + CDlgDefocusList::GetInstance()->SetDefocusTotalCount(pGlassResult->m_nDeFocusCount); + CDlgDefocusList::GetInstance()->SetDefocusData(strTime,pGlassResult->m_strGlassID,pGlassResult->m_nDeFocusCount); } - g_pLog->DisplayMessage(_T("History map Start")); - int nGlassResultCount = 0; - CGlassResult* pHistoryResult = m_pSP2P->ISP2P_GetNewHistoryResult(nGlassResultCount); //taek 210201 - g_pLog->DisplayMessage(_T("History map Copy")); - ReadAOIMemory2(pHistoryResult); - g_pLog->DisplayMessage(_T("History map TransferData")); - UpdateHistoryResultFromTransferData(pHistoryResult, pGlassResult); - g_pLog->DisplayMessage(_T("History Button Enable")); - m_pSP2P->ISP2P_GetDiagnosisHistory2(); + /*< LYW 20211109 - #3662 Delete Start >*/ + // g_pLog->DisplayMessage(_T("History map Start")); + // int nGlassResultCount = 0; + // CGlassResult* pHistoryResult = m_pSP2P->ISP2P_GetNewHistoryResult(nGlassResultCount); //taek 210201 + // g_pLog->DisplayMessage(_T("History map Copy")); + // ReadAOIMemory2(pHistoryResult); + // g_pLog->DisplayMessage(_T("History map TransferData")); + // UpdateHistoryResultFromTransferData(pHistoryResult, pGlassResult); + // g_pLog->DisplayMessage(_T("History Button Enable")); + // m_pSP2P->ISP2P_GetDiagnosisHistory2(); + /*< LYW 20211109 - #3662 Delete End >*/ - /*int nModuleCount = m_pSP2P->ISP2P_GetModuleStatusCount(); //0503 占쏙옙占쏙옙 End占쏙옙 占쏙옙占쏙옙占?0占쏙옙占쏙옙 占십깍옙화 + /*int nModuleCount = m_pSP2P->ISP2P_GetModuleStatusCount(); for (int nModuleIdx = 0; nModuleIdx < nModuleCount; nModuleIdx++) { { ReviewLight_SetLightLevel(nModuleIdx, 0); - g_pLog->DisplayMessage(_T("Module[%d] LightLevel 占십깍옙화"), nModuleIdx); + g_pLog->DisplayMessage(_T("Module[%d] LightLevel"), nModuleIdx); } }*/ - //5. PCControl 占쏙옙호 占쏙옙占쏙옙占쏙옙트 + //5. PCControl if (pGlassResult) { m_pSP2P->ISP2P_UpdateProcessStatus(GetProcessStatus(), pGlassResult); g_pLog->DisplayMessage(_T("PCControl Update Signal")); } - SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); - SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); + SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!")); + } + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END +// SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); +// SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT); +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::OUT] ReviewEnd!")); } @@ -1640,9 +1818,16 @@ void CSequenceProcessor_CPJT::Process_ReviewUnloading() { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] Review Unloading!")); - - if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT)) - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!")); + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD START + if (GetSimulationMode() == FALSE) + { + if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT)) + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!")); + } + //original + //#3584 210817 LYW CF AOI Review �떆裕щ젅�씠�뀡 湲곕뒫 �젙�긽�솕 MOD END +// if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT)) +// m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!")); } @@ -1665,8 +1850,8 @@ CString strCode = _T(""); - int nDefectCount = pRawData->GetGlassData()->m_nDefectNum; // 占쏙옙占썲갯占쏙옙 - int nJudgeCount = pRcpReviewInfo->GetRcpZoneFilterInfoCount();// 占쏙옙占쏙옙 占쏙옙占쏙옙 + int nDefectCount = pRawData->GetGlassData()->m_nDefectNum; + int nJudgeCount = pRcpReviewInfo->GetRcpZoneFilterInfoCount(); int nFilterType = 0; int nJudgeType = 0; int nZoneNumber = 0; @@ -1680,7 +1865,7 @@ int nJudgeCellOKCount = 0; int nPixelSize = 0; int nPixelFilterSize = 0; - //占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 + //1 wsi, 3 CS, 4 R, 5 G, 6 B //pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_fWsi_ResultData[1];//Defect //pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_fWsi_ResultData[3];//cs @@ -1694,10 +1879,10 @@ { -#pragma region 占쏙옙占쏙옙占?fail +#pragma region Align fail if (m_pSP2P->ISP2P_GetCurrentGlassResult()->GetAlignResult()->nResultCode != Align_Success) { - m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] 占쏙옙占쏙옙占?占쏙옙占쏙옙 WSI 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] Align Fail WSI Rejudge Cancel")); break; } #pragma endregion @@ -1735,7 +1920,7 @@ if (nPixelFilterSize <= nPixelSize && nPixelFilterSize != 0) { - m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] 占쏙옙占쏙옙占쏙옙 占쏙옙占싶몌옙 Pixel Size[%d] nPixelFilterSize [%d]"), nPixelSize,nPixelFilterSize); + m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] Size filtering Pixel Size[%d] nPixelFilterSize [%d]"), nPixelSize,nPixelFilterSize); continue; } #pragma endregion @@ -1745,13 +1930,13 @@ for (int nJudgeindex = 0; nJudgeindex < nJudgeCount; nJudgeindex++) { //nZoneType = GetZoneType(); - dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->GetJudgeHeight(); //占쏙옙占쏙옙 + dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->GetJudgeHeight(); nFilterType = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->m_nFilterType; //ZONE nJudge = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->m_nFilterJudge; //OK TR //nZoneNumber = pRcpReviewInfo->GetRcpZoneInfo(nFilterType)->m_vecZoneNumber[0]; - if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh占쏙옙占쏙옙 + if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh { BOOL isZoneValue = FALSE; @@ -1764,7 +1949,7 @@ } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh 占싸깍옙 占쌩곤옙 + m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh isZoneValue = TRUE; //break; @@ -1773,7 +1958,7 @@ if (isZoneValue == FALSE) { - m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh 占싸깍옙 占쌩곤옙 + m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh continue; } @@ -1823,13 +2008,13 @@ } } - else if (fWsiData<=0) // 0占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占싼댐옙. + else if (fWsiData<=0) { - m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] WSI TYPE[%d] WSI 占쏙옙占쏙옙[%0.3lf] <= 0 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙"), nJudgeType, fWsiData); + m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] WSI TYPE[%d] WSI Height[%0.3lf] <= 0 Cancel Rejudge"), nJudgeType, fWsiData); } else { - //20210419 TR 占쏙옙占쏙옙占쏙옙占쏙옙 Judge 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占?OK 占쏙옙占쏙옙 + //20210419 TR //if (nJudge == 1)//TR -> OK //{ if (pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_OK || pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_Unknown) @@ -1880,7 +2065,7 @@ } - else //WSI TYPE 占쏙옙 占싣니몌옙 + else //WSI TYPE { continue; } @@ -1894,13 +2079,13 @@ for (int nJudgeindex = 0; nJudgeindex < nJudgeCount; nJudgeindex++) { //nZoneType = GetZoneType(); - dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->GetJudgeHeight(); //占쏙옙占쏙옙 + dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->GetJudgeHeight(); nFilterType = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->m_nFilterType; //ZONE nJudge = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->m_nFilterJudge; //OK TR //nZoneNumber = pRcpReviewInfo->GetRcpZoneInfo(nFilterType)->m_vecZoneNumber[0]; - if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh占쏙옙占쏙옙 + if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 { BOOL isZoneValue = FALSE; @@ -1913,7 +2098,7 @@ } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh 占싸깍옙 占쌩곤옙 + m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh isZoneValue = TRUE; //break; @@ -1922,7 +2107,7 @@ if (isZoneValue == FALSE) { - m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh 占싸깍옙 占쌩곤옙 + m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh continue; } @@ -1976,7 +2161,6 @@ } else { - //20210419 TR 占쏙옙占쏙옙占쏙옙占쏙옙 Judge 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占?OK 占쏙옙占쏙옙 //if (nJudge == 1)//TR -> OK //{ if (pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_OK || pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_Unknown) @@ -2028,7 +2212,7 @@ } - else //WSI TYPE 占쏙옙 占싣니몌옙 + else //WSI TYPE { continue; } @@ -2043,7 +2227,7 @@ strCode =pRcpReviewInfo->GetRcpZoneFilteringInfo_CODE(nJudgeindex)->m_FilterCode; - if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh占쏙옙占쏙옙 + if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 { nJudgeType = ReJugdeWSIType(nFilterType); @@ -2096,7 +2280,7 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] CODE JUDGE WSI TYPE[%d] Defect CODE [%s] != [%s]"), nJudgeType, strCode, pRawData->GetDefectData(nDefectIdx)->m_strDefectCode); } } - else //WSI TYPE 占쏙옙 占싣니몌옙 + else //WSI TYPE { continue; } @@ -2107,7 +2291,6 @@ } #pragma region CELLJUDGE - //CELL 占쏙옙占쏙옙占쏙옙//////////////////////////////////////////////////////////////// int nCellCount = pRawData->GetGlassData()->m_nCellNum; @@ -2126,7 +2309,7 @@ else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT) { nCelllOKJuge = nCelllOKJuge + 1; - } //taek 21.01.25 Juge 占쏙옙占싹댐옙 占쏙옙占쏙옙 占쏙옙占쌈곤옙 占쌕뀐옙占쏙옙... + } //taek 21.01.25 else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PR_CPJT) { nCelllPRJuge = nCelllPRJuge + 1; @@ -2170,7 +2353,7 @@ } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] 카占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 [%02d]Cell DefectTRCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Count Number is minus! [%02d]Cell DefectTRCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); } break; case JudgeType_T8_PR: @@ -2220,7 +2403,7 @@ } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] 카占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 [%02d]Cell DefectTRCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Count Number is minus! [%02d]Cell DefectTRCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); } break; case JudgeType_T8_PR: @@ -2384,7 +2567,7 @@ } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] CELL COUNT OK:[%d] TR[%d] PR[%d]"), nCelllOKJuge, nCellTRJudge, nCelllPRJuge); #pragma endregion - //GLASS 占쏙옙占쏙옙占쏙옙//////////////////////////////////////////////////////////////// + #pragma region GLASSJUDGE CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if (pRsRcpReviewInfo == NULL) return FALSE; @@ -2432,7 +2615,7 @@ } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] TR 카占쏙옙트占쏙옙 占쏙옙占쏙옙占쏙옙 [%02d]GLASS Defect TR Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] TR Count is minus [%02d]GLASS Defect TR Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); } break; case JudgeType_T8_PR: @@ -2482,7 +2665,7 @@ } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd]TR카占쏙옙트占쏙옙 占쏙옙占쏙옙占쏙옙 [%02d]GLASS Defect TR Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd]TR Count is minus [%02d]GLASS Defect TR Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); } break; case JudgeType_T8_PR: @@ -2670,7 +2853,7 @@ CakFileUtil akFileFinder; while (nReTryTime--) { - //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER 占싯띰옙 占쌩삼옙 占쏙옙占쏙옙 占싻쇽옙 START + //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER START if (nReTryTime%2 == 0) { strFilePath = AOIRAWBIN_PATH; @@ -2679,9 +2862,9 @@ strWild.Format("%s\\%s_*.bin", strFilePath, strFileName); akFileFinder.FindFile(strWild.GetBuffer(0), FALSE); - //LYW LOG占쌩곤옙 + //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 + //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER END VECFINDDATA* pFindData = akFileFinder.getFindData(); int nFileNamePos = strlen(akFileFinder.getProcessPath()); std::map<LONGLONG, CString> mapSpanFileName; @@ -2693,7 +2876,7 @@ parser.process(pFileName, "_."); if (parser.getTokNum() < 4) continue; - if (parser.getTokNum() >= 6) continue; // 0401 占쌩곤옙 + if (parser.getTokNum() >= 6) continue; // 0401 int nDataTime[8] = {}; { @@ -2721,7 +2904,6 @@ { if (mapSpanFileName.begin()->first < nCloseTime) { - //占쏙옙占쏙옙 占쌍깍옙 占쏙옙占쏙옙占쏙옙占?찾占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2019/7/17] strFindFile = mapSpanFileName.begin()->second; break; } @@ -2781,7 +2963,7 @@ int nPCControlReadDataCount = pSignalInfo->GetReadDataAddressCount(); - // [2017:1:9]-[WEZASW] : PCControl GlassData 占쌓몌옙 占쏙옙占쏙옙占쏙옙. + // [2017:1:9]-[WEZASW] : PCControl GlassData if(pSignalInfo->GetUseContinuousReadAddress()) { CString strReadAddress = _T(""); @@ -3160,11 +3342,11 @@ void CSequenceProcessor_CPJT::UpdateGlassResultFromTransferData(CGlassResult *pGlassResult, STransferData* pTransferData) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data 占싻깍옙!")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data Read!")); if (pGlassResult==NULL || pTransferData==NULL) return; - // [2017:1:9]-[WEZASW] : PCControl GlassData 占쌓몌옙 占쏙옙占쏙옙占쏙옙 + // [2017:1:9]-[WEZASW] : PCControl GlassData // transfer data is not exist if (pTransferData->strLotID.GetLength()<1) { @@ -3233,80 +3415,89 @@ pGlassResult->m_strPairFlag = pTransferData->strPairFlag; pGlassResult->m_strOptionValue = pTransferData->strOptionValue; pGlassResult->m_strReserved = pTransferData->strReserved; - pGlassResult->strGlassScanSchedule = pTransferData->strGlassScanSchedule;//占쏙옙占쏙옙 占쏙옙占쏙옙 cmark + pGlassResult->strGlassScanSchedule = pTransferData->strGlassScanSchedule;//cmark pGlassResult->m_strRTMSStepID = pTransferData->strStepID; //taek 210126 - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data 占쏙옙!")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data END!")); } 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) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] 占쏙옙占썰리 占쏙옙占쏙옙占?占쏙옙占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make Directory Start")); if (m_pSP2P==NULL) return; const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); @@ -3352,7 +3543,7 @@ strPath.Format(_T("%s\\%s"),pNetworkInfo->m_strAlignImagePath, strGlassID); CreateDirectory(strPath, NULL); } - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] 占쏙옙占썰리 占쏙옙占쏙옙占?占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make directory End")); } @@ -3360,7 +3551,7 @@ void CSequenceProcessor_CPJT::SetSaveImageBasePathToReviewProcessor(const CString& strGlassID, const CString& strResultDate) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] 占싱뱄옙占쏙옙 占싻쏙옙 占쏙옙占쏙옙占?占쏙옙占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make image path start")); const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); if(pNetworkInfo == NULL) return; @@ -3405,11 +3596,11 @@ Sleep(1000); if (CDitGlassRawClient::GetInstance()->isConnect() == FALSE) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 Count[%d]"), nReconnect); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]access Shared Memory Fail!! Count[%d]"), nReconnect); } else { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]access Shared Memory Success")); break; } nReconnect += 1; @@ -3432,7 +3623,7 @@ else { tmServerLoadingTime = CTime::GetCurrentTime(); - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] 占쏙옙占쏙옙占쌨몌옙 占쏙옙占쏙옙占싱삼옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] access Shared Memory Fail")); strPath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), pNetworkInfo->m_strUploadImagePath, strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); strImagePath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); CreateDirectory(strPath, NULL); @@ -3441,12 +3632,12 @@ } } - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] 占싱뱄옙占쏙옙 占싻쏙옙 占쏙옙占쏙옙占?占쏙옙")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make image path End")); } void CSequenceProcessor_CPJT::SetSaveImageBasePathToAlignCameraControl(const CString& strGlassID) { - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] 占쏙옙占쏙옙占?占싱뱄옙占쏙옙 占싻쏙옙 占쏙옙占쏙옙 ")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make Align image path Start")); const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); if(pNetworkInfo == NULL) return; @@ -3459,7 +3650,7 @@ strPath.Format(_T("%s\\%s"), pNetworkInfo->m_strAlignImagePath, strGlassID); pAlignCameraControl->SetSaveImageBasePath(strPath); } - m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] 占쏙옙占쏙옙占?占싱뱄옙占쏙옙 占싻쏙옙 占쏙옙 ")); + m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make Align image path End ")); } BOOL CSequenceProcessor_CPJT::ReadRecipeDataFromRecipeFile(const CString& strPPID_RC, CString& strRecipeName)// const CString& strPPID, CString& strRecipeName @@ -3526,14 +3717,12 @@ { if(pGlassResult == NULL) return FALSE; - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if (pRsRcpReviewInfo==NULL) return FALSE; // system info const CSystemInfo* pSystemInfo = m_pSP2P->ISP2P_System_GetSystemInfo(); - // 占쌜띰옙 占쏙옙占쏙옙 STransferData* pTransferData = m_pSP2P->ISP2P_GetCurrentTransferData(); if (pTransferData==NULL) return FALSE; int nGlassTypeInfoIndex = 0; @@ -3549,20 +3738,16 @@ if (pGlassTypeInfo == NULL) return FALSE; m_pSP2P->ISP2P_DisplayMessage(_T("GlassTypeName : %s,GlassTypeIdx : %s"),pGlassTypeInfo->m_strGlassTypeName,pTransferData->strGlassScanSchedule); - // 占쏙옙占쏙옙 占쏙옙占쏙옙 const CMotorControlInfo *pMotorInfo = m_pSP2P->ISP2P_System_GetMotorInfo(); - // 占쏙옙표 占쏙옙환占쏙옙 CCoordCalibrator* pCoordCalibrator = m_pSP2P->ISP2P_GetCoordCalibrator(); - // 占쏙옙표占쏙옙 占쏙옙占쏙옙 if (pSystemInfo && pGlassTypeInfo && pMotorInfo && pCoordCalibrator) { // Get Direction int nDirectionX = GetDirectionX(pGlassTypeInfo->m_nOriginDirection, pMotorInfo->GetOriginDirection()); int nDirectionY = GetDirectionY(pGlassTypeInfo->m_nOriginDirection, pMotorInfo->GetOriginDirection()); - // 占쏙옙표占쏙옙 占쏙옙占쏙옙 pCoordCalibrator->SetTransDirection(nDirectionX, nDirectionY); pCoordCalibrator->SetOriginMotorPosition(pGlassTypeInfo->m_dOriginMotorX, pGlassTypeInfo->m_dOriginMotorY); if (fabs(pGlassTypeInfo->m_dAlignAngle) > 0.0000001) @@ -3571,7 +3756,6 @@ pGlassTypeInfo->m_dFirstAlignGlassX, pGlassTypeInfo->m_dFirstAlignGlassY, pGlassTypeInfo->m_dAlignAngle); } - // 占쌜띰옙 占쏙옙占쏙옙 占쏙옙占쏙옙 pGlassResult->SetGlassSize(pGlassTypeInfo->m_nGlassSizeX * 1000, pGlassTypeInfo->m_nGlassSizeY * 1000); pGlassResult->SetGlassOriginDirection(pGlassTypeInfo->m_nOriginDirection); pGlassResult->SetCornerCutDirection(pGlassTypeInfo->m_nCornerCutDirection); @@ -3580,34 +3764,28 @@ pGlassResult->SetCollisionDistanceX(int(pSystemInfo->m_dCollisionDistance*1000.)); } - // Align 占쏙옙占쏙옙 const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); - // Align 占쏙옙占쏙옙 占쏙옙占쏙옙 if (pGlassTypeInfo && pRsRcpAlignInfo) { - // Align 占쏙옙크 占쏙옙占쏙옙 占쏙옙占쏙옙 (占싫쇽옙, 占쏙옙占쏙옙, 占쌜띰옙 占쏙옙치) pGlassResult->m_AlignRecipe.m_nUseAlignPosMove = pGlassTypeInfo->m_nUseAlignPosMove; - // 占싫쇽옙 占쏙옙치 pGlassResult->m_AlignRecipe.dOriginPixelX[0] = pGlassTypeInfo->m_nFirstAlignFindPixelX; pGlassResult->m_AlignRecipe.dOriginPixelY[0] = pGlassTypeInfo->m_nFirstAlignFindPixelY; pGlassResult->m_AlignRecipe.dOriginPixelX[1] = pGlassTypeInfo->m_nSecondAlignFindPixelX; pGlassResult->m_AlignRecipe.dOriginPixelY[1] = pGlassTypeInfo->m_nSecondAlignFindPixelY; - // 占쏙옙占쏙옙 占쏙옙치 pGlassResult->m_AlignRecipe.dOriginPositionX[0] = pGlassTypeInfo->m_dFirstAlignMotorX; pGlassResult->m_AlignRecipe.dOriginPositionY[0] = pGlassTypeInfo->m_dFirstAlignMotorY; pGlassResult->m_AlignRecipe.dOriginPositionX[1] = pGlassTypeInfo->m_dSecondAlignMotorX; pGlassResult->m_AlignRecipe.dOriginPositionY[1] = pGlassTypeInfo->m_dSecondAlignMotorY; - // 占쌜띰옙 占쏙옙치 pGlassResult->m_AlignRecipe.dGlassPositionX[0] = pGlassTypeInfo->m_dFirstAlignGlassX; pGlassResult->m_AlignRecipe.dGlassPositionY[0] = pGlassTypeInfo->m_dFirstAlignGlassY; pGlassResult->m_AlignRecipe.dGlassPositionX[1] = pGlassTypeInfo->m_dSecondAlignGlassX; pGlassResult->m_AlignRecipe.dGlassPositionY[1] = pGlassTypeInfo->m_dSecondAlignGlassY; - // Align Recipe 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌘듸옙占쏙옙占쏙옙 찾占쏙옙 占식띰옙占쏙옙占? + // Align Recipe // Align Skip Mode pGlassResult->m_AlignRecipe.bAlignSkipMode = pRsRcpAlignInfo->m_bAlignSkipMode; pGlassResult->m_AlignRecipe.bUseTotalPitchMeasure = pRsRcpAlignInfo->m_bTotalPitchMeasure; @@ -3617,6 +3795,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 @@ -3627,29 +3811,24 @@ pGlassResult->m_AlignRecipe.nMergeRange = pRsRcpAlignInfo->m_nMergeRange; pGlassResult->m_AlignRecipe.dEdgeRate = pRsRcpAlignInfo->m_dEdgeRate; - // 占쏙옙占쏙옙챨占? pGlassResult->m_AlignRecipe.bManualProcess = pRsRcpAlignInfo->m_bManualProcess; pGlassResult->m_AlignRecipe.dFirstCamExposure = pRsRcpAlignInfo->m_dFirstCamExposure; pGlassResult->m_AlignRecipe.dSecondCamExposure = pRsRcpAlignInfo->m_dSecondCamExposure; - // 占쌘듸옙占쏙옙占쏙옙 占쏙옙占쏙옙 pGlassResult->m_AlignRecipe.bAutoProcess = pRsRcpAlignInfo->m_bAutoProcess; pGlassResult->m_AlignRecipe.dTargetMin = pRsRcpAlignInfo->m_dTargetMin; pGlassResult->m_AlignRecipe.dTargetMax = pRsRcpAlignInfo->m_dTargetMax; pGlassResult->m_AlignRecipe.dExposureMin = pRsRcpAlignInfo->m_dExposureMin; pGlassResult->m_AlignRecipe.dExposureMax = pRsRcpAlignInfo->m_dExposureMax; - // Align Recipe 占쏙옙占쏙옙 占쏙옙占쏙옙 rotate info pGlassResult->m_AlignRecipe.bRotateProcess = pRsRcpAlignInfo->m_bRotateProcess; pGlassResult->m_AlignRecipe.nRetryCount = pRsRcpAlignInfo->m_nRetryCount; pGlassResult->m_AlignRecipe.dGlassAngleMin = pRsRcpAlignInfo->m_dGlassAngleMin; pGlassResult->m_AlignRecipe.dGlassAngleMax = pRsRcpAlignInfo->m_dGlassAngleMax; - - // Align 카占쌨띰옙 占쏙옙占쏙옙 占쏙옙 占쌔삼옙 占쏙옙占쏙옙 + int nAlignCameraInfoCount = 2; for(int nAlignCameraIdx = 0; nAlignCameraIdx < nAlignCameraInfoCount; nAlignCameraIdx++) { - // Align 占쏙옙占쏙옙 占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. int nLightValue = 0; @@ -3657,10 +3836,8 @@ { nLightValue = (nAlignCameraIdx==0) ? (int)pRsRcpAlignInfo->m_dFirstCamExposure: (int)pRsRcpAlignInfo->m_dSecondCamExposure; - // 占쏙옙占쏙옙占?카占쌨띰옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 const CAlignCameraInfo *pCameraInfo = m_pSP2P->ISP2P_System_GetAlignCameraInfo(nAlignCameraIdx); - //占쏙옙占쏙옙占?占쏙옙占쏙옙. CLightControl *pLightControl = NULL; const CLightControlInfo *AlignLightinfo = pCameraInfo->GetLightContorlInfo(); @@ -3669,8 +3846,6 @@ { if (AlignLightinfo->GetMaster()==1&& nAlignCameraIdx==1) { - //占쏙옙占쏙옙占?占쏙옙틀占싼뤄옙占쏙옙 占싹놂옙占쏙옙 占쏙옙占쏙옙퓸占?占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占싸뤄옙 확占쏙옙 - //占쏙옙占쏙옙占쏙옙 占싱곤옙 占승댐옙占쏙옙 占쏜르겟댐옙 占싣뱄옙占쏙옙 占싫알뤄옙占쏙옙 pLightControl = m_pSP2P->ISP2P_GetAlignLightControl(0); } @@ -3704,8 +3879,6 @@ } } - - // 占쏙옙占쏙옙占?카占쌨띰옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 const CAlignCameraInfo *pCameraInfo = m_pSP2P->ISP2P_System_GetAlignCameraInfo(nAlignCameraIdx); if (pCameraInfo) { @@ -3733,7 +3906,6 @@ } } - // 占쏙옙占쏙옙占?占쏙옙占시몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 if((int)pGlassTypeInfo->m_vecTemplateImagePath.size() == nAlignCameraInfoCount) { pGlassResult->m_AlignRecipe.strTemplateName[nAlignCameraIdx] = pGlassTypeInfo->m_vecTemplateImagePath[nAlignCameraIdx]; @@ -3762,14 +3934,13 @@ if (pRcpReviewAFMInfo) { int nRealAFMIndex = pRcpReviewAFMInfo->m_nRecipeIndex; - if(nRealAFMIndex == -1)// 占쏙옙占쏙옙占실울옙 占쏙옙占시듸옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 MagnificInfo Index占쏙옙 占싯아울옙 + if(nRealAFMIndex == -1) { - //-1占쏙옙 占쏙옙占?占쏙옙占쏙옙 占싸듸옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙. nRealAFMIndex = GetRealMagnification(nModuleIdx, pRcpReviewAFMInfo->m_nZoomIndex); } AFM_SetAFMRecipeName(nModuleIdx, strRecipeName, nRealAFMIndex); - if(pRcpReviewAFMInfo->m_bAFMHomeOffMode==TRUE) //190618AFM홈 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 X + if(pRcpReviewAFMInfo->m_bAFMHomeOffMode==TRUE) //190618AFM { SetUseAfmHomePosition(FALSE); } @@ -3781,7 +3952,6 @@ } } - // 占쏙옙占쏙옙 찾占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor(); const CRsRcpDefectFindInfo* pRsRcpDefectFindInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpDefectFindInfo(); if(pReviewProcessor && pRsRcpDefectFindInfo) @@ -3832,7 +4002,6 @@ CString strRawTDPath=_T(""), strRawCDPath=_T(""), strRawSDPath=_T(""); - // 占쏙옙占쏙옙占쏙옙占?占싱몌옙 찾占쏙옙 FindAOIRawFilePath(pGlassResult, &strRawTDPath, &strRawCDPath, &strRawSDPath); bRet = m_pSP2P->ISP2P_ReadAOIRawFileToGlassResult(strRawTDPath); @@ -3886,7 +4055,7 @@ if(finder.IsDots()) continue; if(finder.IsDirectory()) continue; - // [2017:5:16]-[WEZASW] : AOI Server占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙치占쏙옙 占쏙옙占쌉몌옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占?占쏙옙占쏙옙 占쏙옙占싹몌옙 占쏙옙占쏙옙 + // [2017:5:16]-[WEZASW] : AOI Server sRawFile.strFileName = finder.GetFileName(); strExtTemp = sRawFile.strFileName; int nIdx = strExtTemp.Remove('.'); @@ -4064,7 +4233,6 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; - //占썸돌占신몌옙 占쌍깍옙 { double dCollisionPosX = pReviewResult->GetCollisionPositionX() / 1000.0; @@ -4105,13 +4273,12 @@ } - //占승울옙 占쏙옙트占쏙옙 占쏙옙占쏙옙占싱듸옙 pMotorControl->GantrySetTwoGantrySyncModeSend(0); // set result index int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); - nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index 占쌕시쇽옙占쏙옙 + nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index double xpostemp, ypostemp; // get review pos @@ -4121,7 +4288,7 @@ SReviewResult* pReview = pReviewResult->GetSReviewResult(nResultIdx); if (pReview==NULL) continue; - //200占쏙옙 占쏙옙藥뱄옙占쏙옙占?占쏙옙占쏙옙占쏙옙 占싹뤄옙占쏙옙占쏙옙占쏙옙占?占쌩븝옙체크 + //200 if (pReview->bCheckSendToMotor == FALSE) { pReview->bCheckSendToMotor = TRUE; @@ -4168,7 +4335,6 @@ } } - //占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙 占쌍댐옙占쏙옙 占쏙옙占쏙옙占쏙옙 체크 if (vectorPosX.empty() ==TRUE) { g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size()); @@ -4200,13 +4366,11 @@ int nTickCount = GetTickCount(); while (1) { - //5占쏙옙 占쏙옙占쏙옙타占쏙옙 if ((GetTickCount() - nTickCount) > 5000) { bOverTime = TRUE; break; } - //占쏙옙占쏙옙 占쏙옙占?End 체크 if (pMotorControl->IsGantryMotionEnd(pModuleStatus->GetGantryIndex()) == TRUE) { if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) @@ -4225,15 +4389,12 @@ } - //5占쏙옙占식울옙占쏙옙 占싫울옙占쏙옙占싸댐옙? 占쌓뤄옙 3占쏙옙 占쏙옙천占?占쏙옙占쏙옙 - //占쏙옙占폜nd 占쏙옙 占쌩몌옙 占쏙옙占시쇽옙占쏙옙 占쏙옙占쏙옙占쏙옙 if (bOverTime == TRUE) { for (int i = 0; i < 3; i++) { Sleep(1000); - //占쏙옙占싶곤옙 占쏙옙占쏙옙占싹쇽옙 占쏙옙占승삼옙占쏙옙占싹띰옙 Send 占쏙옙호占쏙옙 Fail 占쌩삼옙 占쏙옙占쏙옙 Retry 3占쏙옙 占쏙옙占쏙옙 if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) { nTotalCount += (int)vectorPosX.size(); @@ -4307,7 +4468,7 @@ if(pGlassResult && pReviewProcessor) { // UserStart - pReviewProcessor->SetJobID(pGlassResult->m_strJobID); //pGlassResult->m_strGlassID -> pGlassResult->m_strJobID 占쏙옙占쏙옙 + pReviewProcessor->SetJobID(pGlassResult->m_strJobID); //pGlassResult->m_strGlassID -> pGlassResult->m_strJobID pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_UserStart, nPlanIndex); @@ -4370,7 +4531,6 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; - //占썸돌占신몌옙 占쌍깍옙 { double dCollisionPosX = pReviewResult->GetCollisionPositionX() / 1000.0; @@ -4413,9 +4573,9 @@ // set result index int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); - nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount() - 1)) + 1; // End Index 占쌕시쇽옙占쏙옙 + nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount() - 1)) + 1; // End Index - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; double xpostemp, ypostemp; @@ -4426,7 +4586,7 @@ SReviewResult* pReview = pReviewResult->GetSReviewResult(nResultIdx); if (pReview == NULL) continue; - //200占쏙옙 占쏙옙藥뱄옙占쏙옙占?占쏙옙占쏙옙占쏙옙 占싹뤄옙占쏙옙占쏙옙占쏙옙占?占쌩븝옙체크 + //200 if (pReview->bCheckSendToMotor == FALSE) { pReview->bCheckSendToMotor = TRUE; @@ -4474,7 +4634,6 @@ } } - //占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙 占쌍댐옙占쏙옙 占쏙옙占쏙옙占쏙옙 체크 if (vectorPosX.empty() == TRUE) { g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size()); @@ -4530,6 +4689,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!!")); @@ -4539,7 +4708,7 @@ if(pGlassResult && pReviewProcessor) { // WsiStart - pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID 占쏙옙占쏙옙 + pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIStart, nPlanIndex); @@ -4552,7 +4721,7 @@ MakeWSIUpLoadDirectory(pReviewProcessor->GetUploadImagePath()); //20190219 chm - pReviewProcessor->SetReviewCount(0); // 占쏙옙占쏙옙 Sequence No 占십깍옙화. + pReviewProcessor->SetReviewCount(0); return TRUE; } @@ -4565,7 +4734,7 @@ strPath = strPath + _T("\\WSI"); if(CreateDirectory(strPath,NULL)==FALSE) { - //LYW LOG占쌩곤옙 + //LYW LOG g_pLog->DisplayMessage(_T("[MakeWSIUpLoadDirectory]Directory Create Fail %s, ERROR CODE = %d "),strPath, GetLastError()); } @@ -4606,7 +4775,7 @@ VectorDouble vectorCollisionPosX; vectorCollisionPosX.clear(); - //WSI 占승울옙 占쏙옙트占쏙옙 占쏙옙占쏙옙占싱듸옙 + //WSI pMotorControl->GantrySetTwoGantrySyncModeSend(1); // WSI result count @@ -4619,7 +4788,6 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; - //占썸돌占신몌옙 占쌍깍옙 { double dCollisionPosX = pWsiResult->GetCollisionPositionX() / 1000.0; double dCollisionPosY = 0.0; @@ -4660,7 +4828,7 @@ int nEndIdx = pWsiResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiResult->GetSReviewResultCount() - 1)) + 1; // set End Index - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -4672,7 +4840,7 @@ SReviewResult* pWsi = pWsiResult->GetSReviewResult(nResultIdx); if (pWsi == NULL) continue; - //200占쏙옙 占쏙옙藥뱄옙占쏙옙占?占쏙옙占쏙옙占쏙옙 占싹뤄옙占쏙옙占쏙옙占쏙옙占?占쌩븝옙체크 + //200 if (pWsi->bCheckWSISendToMotor == FALSE) { pWsi->bCheckWSISendToMotor = TRUE; @@ -4719,14 +4887,13 @@ } } - //占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙 占쌍댐옙占쏙옙 占쏙옙占쏙옙占쏙옙 체크 if (vectorPosX.empty() == TRUE) { - //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error 占싯띰옙 占쌩삼옙 占쏙옙占쏙옙 占싻쇽옙 占쏙옙 占쏙옙치 START + //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 + //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error END } else { @@ -4750,13 +4917,12 @@ int nTickCount = GetTickCount(); while (1) { - //5占쏙옙 占쏙옙占쏙옙타占쏙옙 if ((GetTickCount() - nTickCount) > 5000) { bOverTime = TRUE; break; } - //占쏙옙占쏙옙 占쏙옙占?End 체크 + //End 체크 if (pMotorControl->IsGantryMotionEnd(pModuleStatus->GetGantryIndex()) == TRUE) { if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) @@ -4775,15 +4941,12 @@ } - //5占쏙옙占식울옙占쏙옙 占싫울옙占쏙옙占싸댐옙? 占쌓뤄옙 3占쏙옙 占쏙옙천占?占쏙옙占쏙옙 - //占쏙옙占폜nd 占쏙옙 占쌩몌옙 占쏙옙占시쇽옙占쏙옙 占쏙옙占쏙옙占쏙옙 if (bOverTime == TRUE) { for (int i = 0; i < 3; i++) { Sleep(1000); - //占쏙옙占싶곤옙 占쏙옙占쏙옙占싹쇽옙 占쏙옙占승삼옙占쏙옙占싹띰옙 Send 占쏙옙호占쏙옙 Fail 占쌩삼옙 占쏙옙占쏙옙 Retry 3占쏙옙 占쏙옙占쏙옙 if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) { nTotalCount += (int)vectorPosX.size(); @@ -4918,9 +5081,9 @@ // get result index int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); - nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index 占쌕시쇽옙占쏙옙 + nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -5022,7 +5185,7 @@ if(pGlassResult && pReviewProcessor) { // MeasureStart - pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID 占쏙옙占쏙옙 + pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_MeasureStart, nPlanIndex); @@ -5097,7 +5260,7 @@ const SCoordInfo* pCoordInfo = Module_GetCoordInfo(nModuleIdx); if(pCoordInfo == NULL) continue; - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -5203,7 +5366,6 @@ int nTotalCount = 0; double dDefectPosX, dDefectPosY; - // Module占쏙옙 占쏙옙치占쏙옙 占쏙옙占쏙옙 ModuleStatus sorting std::vector<CModuleStatus*> SortedModuleStatus; for(int nModuleIdx = 0; nModuleIdx < m_pSP2P->ISP2P_GetModuleStatusCount(); nModuleIdx++) { @@ -5257,7 +5419,7 @@ const SCoordInfo* pCoordInfo = Module_GetCoordInfo(pReviewResult->GetModuleIndex()); if(pCoordInfo == NULL) continue; - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -5278,7 +5440,6 @@ if(nHeaderIdx == 0) { - // 占싱듸옙占쏙옙 占쏙옙占쏙옙占쏙옙표 占쌩곤옙 if((int)vectorPos.size() < MAX_MOTOR_ADDRESS_SIZE) { pSReviewResult->dTargetMotorX = dDefectPosX; @@ -6545,8 +6706,6 @@ // add user schedule result - - //占쏙옙占쏙옙占쌨모리울옙 채占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙표占쏙옙 占쏙옙占쏙옙체占쏙옙 채占쏙옙占쌍댐옙 占쏙옙占? { @@ -7261,7 +7420,6 @@ break; } break; - // 占싱삼옙占? case CPJT_PlanMeasure: { const CRcpMeasureInfo *pRcpMeasureInfo = pRsRcpMeasureInfo->GetRcpMeasureInfo(0); @@ -7394,7 +7552,7 @@ } //CIM DV Data -BOOL CSequenceProcessor_CPJT::SendDVDataToSignalControl() // 占쏙옙占쏙옙 +BOOL CSequenceProcessor_CPJT::SendDVDataToSignalControl() { CGlassResult *pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); if (pGlassResult==NULL) return FALSE; @@ -7419,7 +7577,7 @@ } -int CSequenceProcessor_CPJT::MakeDVData(CGlassResult *pGlassResult, char* pDVData, int nIndex) // 占쏙옙占쏙옙 +int CSequenceProcessor_CPJT::MakeDVData(CGlassResult *pGlassResult, char* pDVData, int nIndex) { g_pLog->DisplayMessage(_T("[SequenceProcessor] SendDVDataToSignalControl->MakeDVData IN.")); @@ -7428,16 +7586,16 @@ const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if (pRsRcpReviewInfo == NULL) return FALSE; - // Review 占쏙옙占쏙옙 占쏙옙占쏙옙 + // Review const CRcpLightInfo *pReviewLightInfo = pRsRcpReviewInfo->GetRcpLightInfo(nIndex); - // Review AFM 占쏙옙占쏙옙 + // Review AFM const CRcpAFMRecipeInfo *pReviewAFMInfo = pRsRcpReviewInfo->GetRcpAFMRecipeInfo(nIndex); // Review Align Info const CAlignResult* pAlignResult = pGlassResult->GetAlignResult(); // Review Defect Info const CReviewResult* pReviewResult = pGlassResult->GetReviewResult(nIndex); - // Review 占쏙옙占쏙옙 占쏙옙占쏙옙 + // Review const CModuleStatus* pModuleStatus = Module_GetModuleStatus(nIndex); const SMagnificInfo* pSMagnificInfo = pModuleStatus->GetMagnificInfo(pReviewAFMInfo->GetZoomIndex()); CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl(); @@ -7459,12 +7617,12 @@ // Write DVData Packet //_DVDataPack_B7_8ver DVDataPack; //**Review - //INLINE : 10占쏙옙 - //TFE-OFF : 20占쏙옙 - //Hcut : 50占쏙옙 - //LAMI : 5占쏙옙 + //INLINE : 10 + //TFE-OFF : 20 + //Hcut : 50 + //LAMI : 5 //**WSI - //10占쏙옙 占쏙옙占쏙옙 + //10 /////////////////////////////////////////////////////////////////////////// @@ -7502,8 +7660,13 @@ int nReviewAliveCamera01 = 0; //foucs - nRev_Cam1_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast * 1000; - nRev_Cam2_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview01ImageContrast * 1000; + /*< LYW 20211109 - #3662 MOD Start >*/ + nRev_Cam1_Image_Contrast = m_pSP2P->ISP2P_GetReview00ImageContrast() * 1000; + nRev_Cam2_Image_Contrast = m_pSP2P->ISP2P_GetReview01ImageContrast() * 1000; + /*< LYW 20211109 - #3662 MOD End >*/ + /*< Origin Code >*/ +// nRev_Cam1_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast * 1000; +// nRev_Cam2_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview01ImageContrast * 1000; //nRev_PC_HDD_CHECK = GetDiskUsage() * 1000; //nWSI1_PC_HDD_CHECK = nRev_PC_HDD_CHECK;//GetDiskUsage() * 1000; @@ -7511,8 +7674,8 @@ //nAlignResult = 1; - //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//占쏙옙占쏙옙 - //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//占쏙옙占쏙옙 + //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000; + //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000; //nAlignResult00 = pAlignResult->dFindScore[0]; //nAlignResult01 = pAlignResult->dFindScore[1]; @@ -7530,7 +7693,6 @@ nAlignResult01 = 0; } - //占식울옙? nReviewAliveCamera00 = ReviewCamera_GetReviewCameraControl(0)->GetConnected() * 1000; nReviewAliveCamera01 = ReviewCamera_GetReviewCameraControl(1)->GetConnected() * 1000; @@ -7547,8 +7709,7 @@ { wsprintf(DriveText, TEXT("%C:"), Drive); UINT type = GetDriveType(DriveText); - if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { - // 占싹듸옙酉? + if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { ULARGE_INTEGER i64FreeBytesToCaller = { 0 }, i64TotalBytes = { 0 }, i64FreeBytes = { 0 }; BOOL bRsult = GetDiskFreeSpaceEx(DriveText, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); if (bRsult) { @@ -7762,7 +7923,7 @@ pSignalControl->WritePacketData(_T("15100"), sizeof(DVDataPack_CPJT), (short*)&DVData);*/ } -//#3358 KYH FDC 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 ADD START +//#3358 KYH FDC ADD START void CSequenceProcessor_CPJT::MakeDVData2() { @@ -7775,9 +7936,9 @@ } else { - // Review 占쏙옙占쏙옙 占쏙옙占쏙옙 + // Review pReviewLightInfo = pRsRcpReviewInfo->GetRcpLightInfo(0); - // Review AFM 占쏙옙占쏙옙 + // Review AFM pReviewAFMInfo = pRsRcpReviewInfo->GetRcpAFMRecipeInfo(0); } @@ -7801,7 +7962,7 @@ - // Review 占쏙옙占쏙옙 占쏙옙占쏙옙 + // Review const CModuleStatus* pModuleStatus = Module_GetModuleStatus(0); const SMagnificInfo* pSMagnificInfo = NULL; if (pModuleStatus == NULL) @@ -7871,29 +8032,37 @@ int nReviewAliveCamera01 = 1000; //foucs + /*< LYW 20211109 - #3662 MOD Start >*/ if (m_pSP2P != NULL) { - if (m_pSP2P->ISP2P_GetCurrentGlassResult() != NULL) - { - - nRev_Cam1_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast * 1000; - nRev_Cam2_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview01ImageContrast * 1000; - - if (m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast <=-2 || m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast >=999) - { - nRev_Cam1_Image_Contrast = 0 * 1000; - } - if (m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast <=-2|| m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast >=999) - { - nRev_Cam2_Image_Contrast = 0 * 1000; - } - } - else - { - nRev_Cam1_Image_Contrast = 0; - nRev_Cam2_Image_Contrast = 0; - } + nRev_Cam1_Image_Contrast = m_pSP2P->ISP2P_GetReview00ImageContrast() * 1000; + nRev_Cam2_Image_Contrast = m_pSP2P->ISP2P_GetReview01ImageContrast() * 1000; } + /*< LYW 20211109 - #3662 MOD End >*/ + /*< Origin Code >*/ +// if (m_pSP2P != NULL) +// { +// if (m_pSP2P->ISP2P_GetCurrentGlassResult() != NULL) +// { +// +// nRev_Cam1_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast * 1000; +// nRev_Cam2_Image_Contrast = m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview01ImageContrast * 1000; +// +// if (m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast <=-2 || m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast >=999) +// { +// nRev_Cam1_Image_Contrast = 0 * 1000; +// } +// if (m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast <=-2|| m_pSP2P->ISP2P_GetCurrentGlassResult()->nReview00ImageContrast >=999) +// { +// nRev_Cam2_Image_Contrast = 0 * 1000; +// } +// } +// else +// { +// nRev_Cam1_Image_Contrast = 0; +// nRev_Cam2_Image_Contrast = 0; +// } +// } @@ -7903,8 +8072,8 @@ //nAlignResult = 1; - //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//占쏙옙占쏙옙 - //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//占쏙옙占쏙옙 + //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000; + //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000; //nAlignResult00 = pAlignResult->dFindScore[0]; //nAlignResult01 = pAlignResult->dFindScore[1]; @@ -7944,7 +8113,6 @@ nAlignResult01 = 1000; } - //占식울옙? if (ReviewCamera_GetReviewCameraControl(0) != NULL) { nReviewAliveCamera00 = ReviewCamera_GetReviewCameraControl(0)->GetConnected() * 1000; @@ -7976,8 +8144,7 @@ { wsprintf(DriveText, TEXT("%C:"), Drive); UINT type = GetDriveType(DriveText); - if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { - // 占싹듸옙酉? + if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { ULARGE_INTEGER i64FreeBytesToCaller = { 0 }, i64TotalBytes = { 0 }, i64FreeBytes = { 0 }; BOOL bRsult = GetDiskFreeSpaceEx(DriveText, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); if (bRsult) { @@ -8024,7 +8191,7 @@ return; } -//#3358 KYH FDC 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 ADD END +//#3358 KYH FDC ADD END DWORD CSequenceProcessor_CPJT::GetDiskUsage() { @@ -8062,7 +8229,7 @@ BOOL bResult = FALSE; - // PCControl D2300 (占싯삼옙 占쏙옙占쏙옙) + // PCControl D2300 switch(nSignalIndex) { case PCControlRecv_TimeChange: @@ -8128,7 +8295,7 @@ g_pLog->DisplayMessage(_T("[SequenceProcessor] Success! SetLocalTime(), Current: %04d-%02d-%02d %02d-%02d-%02d, Changed: %04d-%02d-%02d %02d-%02d-%02d"), CurrentTime.wYear, CurrentTime.wMonth, CurrentTime.wDay, CurrentTime.wHour, CurrentTime.wMinute, CurrentTime.wSecond, ChangedTime.wYear, ChangedTime.wMonth, ChangedTime.wDay, ChangedTime.wHour, ChangedTime.wMinute, ChangedTime.wSecond); - // AFM & WSI TIME 占쏙옙占쏙옙화 + // AFM & WSI TIME SendSystemTime(ChangedTime); } else { g_pLog->DisplayMessage(_T("[SequenceProcessor] Fail! SetLocalTime()")); @@ -8155,7 +8322,7 @@ return TRUE; } -// Local System 占쏙옙占쏙옙 占시곤옙占쏙옙 占쏙옙占쏙옙 占쏙옙청 占쏙옙트占싼뤄옙占쏙옙 占시곤옙占쏙옙 처占쏙옙 占쏙옙占쏙옙 +// Local System BOOL CSequenceProcessor_CPJT::SendSystemTime(SYSTEMTIME sysTime) { SYSTEMTIME CurrentTime; @@ -8302,7 +8469,7 @@ case PCControlSend_Defoucs: m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Defoucs! => %d"),0); break; - case PCControlSend_Diagnosis: // 0412 占쌘곤옙占쏙옙占쏙옙 占쏙옙호 占쌩곤옙 + case PCControlSend_Diagnosis: // 0412 m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Diagnosis! => %d"), 0); break; } @@ -8354,8 +8521,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; } } @@ -8413,7 +8580,7 @@ case PCControlSend_Defoucs: m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Defoucs! => %d"),0); break; - case PCControlSend_Diagnosis: // 0412 占쌘곤옙占쏙옙占쏙옙 占쏙옙호 占쌩곤옙 + case PCControlSend_Diagnosis: // 0412 m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Diagnosis! => %d"), 0); break; } @@ -8513,6 +8680,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!")); } @@ -8520,14 +8688,16 @@ case PCControlRecv_ManualMode_CPJT: // manual mode on { - m_pSP2P->ISP2P_GetDiagnosisHistory2(); - + /*< LYW 20211109 - #3662 Delete Start >*/ + //m_pSP2P->ISP2P_GetDiagnosisHistory2(); + /*< LYW 20211109 - #3662 Delete End >*/ + m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Manual Mode")); bResult = SetProcessMode(ProcessManualMode_CPJT); if (bResult==FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Manual Mode Error!")); // lmk simul manual camera,motor stop - //ReviewCamera_CameraControl(CameraControlStop); // 占쏙옙占쏙옙 占쏙옙占쌩몌옙 카占쌨띰옙 占쌘듸옙 占쏙옙탑 + //ReviewCamera_CameraControl(CameraControlStop); CMotorControl* pMotorControl = m_pSP2P->ISP2P_GetMotorControl(); if(pMotorControl) pMotorControl->CommonSetAutoStop(); @@ -8698,10 +8868,10 @@ if (SetLocalTime(&sTime)) { - m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] 占시곤옙占쏙옙占쏙옙화占쏙옙占쏙옙 %s"), strtime); + m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] TymeSync Success %s"), strtime); } else - m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] 占시곤옙占쏙옙占쏙옙화占쏙옙占쏙옙 %s"), strtime); + m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] TymeSync Fail %s"), strtime); //memcpy(&time, strTime, 2); @@ -8716,12 +8886,11 @@ break; case PCControlRecv_Autodiagnosis: { - //#3514_LYW_CF AOI Review 자가진단 기능 개선_START + /*< LYW 20210719 : #3517 ADD Start >*/ CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl(); CString strDiagnosisMode; pSignalControl->ReadData(_T("11160"), 2, strDiagnosisMode); int nDiagnosisMode = atoi(strDiagnosisMode); - //#3514_LYW_CF AOI Review 자가진단 기능 개선_END m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] Diagno start => %d, DiagnosisMode => %d"), bSignalOn, nDiagnosisMode); if (bSignalOn) { @@ -8731,7 +8900,7 @@ m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, nDiagnosisMode); } - //#3514_LYW_CF AOI Review 자가진단 기능 개선_END + /*< LYW 20210719 : #3517 ADD End >*/ else bResult = SendSignalOffToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0); @@ -8930,7 +9099,6 @@ CReviewResult* pWsiMultiShotResult = pGlassResult->GetWsiMultiShotResult(nModuleIndex); if (pWsiMultiShotResult == NULL) goto RESULT_FAIL; - // 占쏙옙占쏙옙占쏙옙 占싸듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占승댐옙. int nCurResultIdx = pWsiMultiShotResult->GetLastSReviewResultIndex() + 1; // last index + 1 int nStartResultIdx = pWsiMultiShotResult->GetStartSReviewResultIndex(); int nEndResultIdx = pWsiMultiShotResult->GetEndSReviewResultIndex(); @@ -8944,13 +9112,11 @@ int nMPosY = int(pPosition->dMotorPosY * 1000.0); double dTime = (double)m_ProcessTimer.GetDurationMilliSecond(); - // 占싸듸옙占쏙옙占쏙옙 占쌕몌옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. if (measureResut.nResultIndex != nCurResultIdx) { goto RESULT_FAIL; } - // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙. // measureResut if (pWsiMultiShotResult->GetSReviewResultCount() == 0) return; @@ -8975,7 +9141,6 @@ // set last result idx pWsiMultiShotResult->SetLastSReviewResultIndex(nCurResultIdx); - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 占쌉곤옙, WSI 占쏙옙占쏙옙占?占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙... if (nCurResultIdx == nEndResultIdx && nCurResultIdx <= pWsiMultiShotResult->GetSReviewResultCount()) { nStartResultIdx = nCurResultIdx + 1; @@ -8986,8 +9151,7 @@ pWsiMultiShotResult->SetStartSReviewResultIndex(nStartResultIdx); pWsiMultiShotResult->SetEndSReviewResultIndex(nEndResultIdx); - // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙. - ::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙. + ::Sleep(3000); // Process_RemainWsiPoint(nModuleIndex); } @@ -9053,7 +9217,7 @@ if(pGlassResult && pReviewProcessor) { // WsiStart - pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID 占쏙옙占쏙옙 + pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIReflowStart, nPlanIndex); @@ -9089,7 +9253,7 @@ if(pGlassResult && pReviewProcessor) { // WsiStart - pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID 占쏙옙占쏙옙 + pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIStart, nPlanIndex); @@ -9116,7 +9280,6 @@ WSIAllReadySignal(1); // send wsi start - // 占쏙옙占쏙옙 占쏙옙占쏙옙 if (!WSIMultiShotAllStartSignal()) { g_pLog->DisplayMessage(_T("[WSI] WSI MultiShot Start Fail!!")); @@ -9127,7 +9290,7 @@ if (pGlassResult && pReviewProcessor) { // WsiStart - pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID 占쏙옙占쏙옙 + pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIMultiShotStart, nPlanIndex); @@ -9190,7 +9353,7 @@ int nEndIdx = pWsiResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiResult->GetSReviewResultCount()-1)) + 1; // set End Index - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -9320,7 +9483,6 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; - //占썸돌占신몌옙 占쌍깍옙 { double dCollisionPosX = pWsiUserResult->GetCollisionPositionX() / 1000.0; double dCollisionPosY = 0.0; @@ -9363,7 +9525,7 @@ int nEndIdx = pWsiUserResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiUserResult->GetSReviewResultCount()-1)) + 1; // set End Index - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -9466,17 +9628,13 @@ } } - - //占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 + pWsiMultiShotResult->GetVectorSReviewResult()->clear(); int nResultCount = 0; if (m_vecSReviewResult.size()>0) { - //占쏙옙占쏙옙占쌕몌옙 占쏙옙占쏙옙 占쏙옙占?占쏙옙占쏙옙占쏙옙占쏙옙킷占?占쏙옙 占쏙옙占쏙옙殮占?占쏙옙占쏙옙 for(int i=0; i< m_vecSReviewResult.size(); i++) - { - //占쏙옙占쏙옙占쏙옙 占쏙옙占시울옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌉뤄옙占쌔야듸옙 占쌓것몌옙큼 占쏙옙占쏙옙占쏙옙! - //占쏙옙占쏙옙占쏙옙 WSI FOV 4占쏙옙占쏙옙 占쏙옙占쌔울옙占쏙옙 占쏙옙占쏙옙 + { double dOringinX = m_vecSReviewResult[i].nUMOriginX; double dOringinY = m_vecSReviewResult[i].nUMOriginY; @@ -9745,8 +9903,6 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; - - //占썸돌占신몌옙 占쌍깍옙 { double dCollisionPosX = pWsiMultiShotResult->GetCollisionPositionX() / 1000.0; @@ -9774,7 +9930,7 @@ int nEndIdx = pWsiMultiShotResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiMultiShotResult->GetSReviewResultCount() - 1)) + 1; // set End Index - // [2017:3:8]-[WEZASW] : CameraOffset 占쏙옙占쏙옙 占쏙옙占쏙옙 (-1~1 => -5~5) + // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -10215,7 +10371,7 @@ CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if(pRsRcpReviewInfo == NULL) return FALSE; - if(pRsRcpReviewInfo->GetRcpUserDefectInfoCount() < 1) return TRUE; // 占쏙옙占쏙옙占쏙옙占쏙옙 카占쏙옙트占쏙옙 占쏙옙占쌕몌옙 占싼어가占쏙옙 + if(pRsRcpReviewInfo->GetRcpUserDefectInfoCount() < 1) return TRUE; double dCenterPosX, dCenterPosY; @@ -10274,18 +10430,18 @@ _grmGlassData* pSharedGlassData = pDitSharedGlassRaw->GetGlassData(); if(pSharedGlassData == NULL) return FALSE; - //pSharedGlassData->m_nUserReviewNum = 0; //占쏙옙占쏙옙 占쌨몌옙 User plan + //pSharedGlassData->m_nUserReviewNum = 0; // User plan _grmDefectData* pSharedDefect; - int nPointCount = pRecipeinfo->GetRcpUserDefectInfoCount(); // User 占쏙옙표 占쏙옙 카占쏙옙트 + int nPointCount = pRecipeinfo->GetRcpUserDefectInfoCount(); - int nSharedDefectNum = pSharedGlassData->m_nDefectNum; // 占쏙옙占쏙옙 占싼곤옙占쏙옙 User Idx 占쏙옙 첫占쏙옙째 Index 占쏙옙 占싫댐옙 - int nStartIdx=nSharedDefectNum;// USER 占쏙옙占쏙옙 占쏙옙占쏙옙 IDX 占싸울옙占싹깍옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 + int nSharedDefectNum = pSharedGlassData->m_nDefectNum; + int nStartIdx=nSharedDefectNum; - CRcpPlanInfo* pRcpPlanInfo; // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 - CRcpUserDefectInfo *pDefectInfo;// 占쏙옙占쏙옙占쏙옙 defect 占쏙옙占쏙옙 + CRcpPlanInfo* pRcpPlanInfo; + CRcpUserDefectInfo *pDefectInfo; - int nInsepectionType;// User 타占쏙옙 Reviewreflow = 0 wsiReflow =1; REV&WSI =2; WSIUSEr =3; USER =4; + int nInsepectionType;// User Reviewreflow = 0 wsiReflow =1; REV&WSI =2; WSIUSEr =3; USER =4; int nCount = 0; @@ -10349,7 +10505,7 @@ BOOL CSequenceProcessor_CPJT::CompareRevType(int nInsType,int nRevType) { - //Plan 타占쌉곤옙 InspectionMode 占쏙옙 + //Plan InspectionMode if(nRevType == CPJT_PlanUser) { if(nInsType == USER) return TRUE; @@ -10407,7 +10563,7 @@ CString strMessage, strResultFilePath, strUploadResultFilePath, strLocalRawPath; CString strUploadRawPath, strUploadImagePath, strAOIRawFileName, strAOIRawFilePath; - //3-1. 占쏙옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 占쏙옙占쏙옙 + //3-1. m_pSP2P->ISP2P_SetReviewResultData(pGlassResult); strLocalRawPath = pNetworkInfo->m_strLocalRawPath; @@ -10434,7 +10590,7 @@ if(strUploadRawPath.IsEmpty() == FALSE && strAOIRawFilePath.IsEmpty() == FALSE) { - // [2017:5:16]-[WEZASW] : 占쏙옙占쏙옙 PASS占쏙옙占쏙옙 占쏙옙占쏙옙 占쏘영占쏙옙 占쏙옙황占쏙옙 占쏙옙占쏙옙 AOI Server占쏙옙 RAW 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占싸듸옙 占쏙옙占쏙옙. + // [2017:5:16]-[WEZASW] : strUploadResultFilePath.Format(_T("%s\\%s"), strUploadRawPath, strAOIRawFileName); if(CopyFile(strResultFilePath, strUploadResultFilePath, FALSE)) @@ -10455,9 +10611,9 @@ } // delete file of Glass direction - DeleteFile(pNetworkInfo->m_strAOIRawPath + _T("\\") + pGlassResult->m_strJobID + _T("TD"));//pGlassResult->m_strGlassID -> m_StrJobID 占쏙옙占쏙옙 + DeleteFile(pNetworkInfo->m_strAOIRawPath + _T("\\") + pGlassResult->m_strJobID + _T("TD"));//pGlassResult->m_strGlassID -> m_StrJobID - // [2017:4:11]-[WEZASW] :CIM(DV Data) 占쏙옙占쏙옙 占쌓몌옙 占쌩곤옙. + // [2017:4:11]-[WEZASW] :CIM(DV Data) if (SendDVDataToSignalControl()==FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] DV Data Send FAIL!")); @@ -10477,8 +10633,6 @@ BOOL CSequenceProcessor_CPJT::MoveReviewStartMotorPosition(CGlassResult* pGlassResult,int nReviewType) { - //혹占시놂옙 占쏙옙占싹깍옙占?占쏙옙占쌤듸옙 - //占쏙옙占쏙옙 占시뤄옙占쏙옙 첫占쏙옙째 占쏙옙치占쏙옙 占싱듸옙 double dDefectPosX,dDefectPosY = 0; @@ -10542,7 +10696,7 @@ void CSequenceProcessor_CPJT::SendWsiErrorAlarm_CPJT(int Index) //190801 chm { - //wsi 占쏙옙占쏙옙 占싯띰옙 + //wsi if(Index==1) { g_pLog->DisplayMessage(_T("[SequenceProcessor_CPJT] WSI Alive Error!!!")); @@ -10556,7 +10710,7 @@ void CSequenceProcessor_CPJT::SendWsiAlive_CPJT()//190801 chm { - //WSI Alive 占쏙옙호 占쏙옙占쏙옙 + //WSI Alive SetWSIAliveCheck(TRUE); } @@ -10582,7 +10736,7 @@ if(bWsiAliveCheck ==FALSE){ m_pCSPC->SendWsiErrorAlarm_CPJT(1); } - bWsiAliveCheck=FALSE; //30占십울옙 占싼뱄옙占쏙옙 0占쏙옙占쏙옙 占십깍옙화 + bWsiAliveCheck=FALSE; } } -- Gitblit v1.9.3