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