Ongoing80 #4669 CF AOI Review Glass Grade PT판정 처리 추가
1. Glass, Cell PT 판정 추가.
2. GlassRawMessenger 데이터 추가
3. GlassRawMessenger 동기화
| | |
| | | for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMin%02d", i); |
| | | for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMax%02d", i); |
| | | for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcAvg%02d", i); |
| | | fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness"); |
| | | /* < KMH 20220816 : #4271 MOD Start > */ |
| | | // R_Scale, GateLine, DataLine, Channel í목ì¶ê° |
| | | //fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness"); |
| | | fprintf(pf, ", DefectPeak, PixelSize, DefectType, UMSize, R_Scale, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness, GateLine, DataLine, Channel"); |
| | | /* < KMH 20220816 : #4271 MOD End > */ |
| | | fprintf(pf, "\n"); |
| | | |
| | | for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++) |
| | |
| | | _grmDefectData* pDefect = pData->GetDefectData(iDefect); |
| | | /* < KJG 20220225 - #4000 ADD Start >*/ |
| | | CString strDefectCellID; |
| | | strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]); |
| | | /* < KMH 20220728 : # MOD Start > */ |
| | | //strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]); |
| | | |
| | | // enum DefectLocation { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_EdgeLine, DefectLoc_Proj, DefectLoc_Chip, DefectLoc_Corner, DefectLoc_DeepPad, DefectLoc_DeepAA, DefectLoc_CrackPT }; |
| | | // 3,4,5 : PAD Defect |
| | | if (pDefect->m_sDefectLoc == 3 || pDefect->m_sDefectLoc == 4 || pDefect->m_sDefectLoc == 5) |
| | | { |
| | | _grmGlassData *pGlass = pData->GetGlassData(); |
| | | int nMinDistance = max(pGlass->m_nGlassSizeWidth, pGlass->m_nGlassSizeHeight); |
| | | |
| | | for (int iCell = 0; iCell < pGlass->m_nCellNum; iCell++) |
| | | { |
| | | _grmCellData* pCell = pData->GetCellData(iCell); |
| | | |
| | | int nCellCenterX = (pCell->m_rectCellLeft + pCell->m_rectCellRight) / 2; |
| | | int nCellCenterY = (pCell->m_rectCellTop + pCell->m_rectCellBottom) / 2; |
| | | //int nTempDistance = sqrt(pow(ptCellCenter.x - pDefect->m_nUMCenterAlignX,2) + pow(ptCellCenter.y - pDefect->m_nUMCenterAlignY,2)); |
| | | |
| | | if (pDefect->m_nModelIdx == pCell->m_nModelIdx) // ëíì 모ë¸ê³¼ ì
ì 모ë¸ì´ ê°ì ëë§ ë¹êµ |
| | | { |
| | | int nTempDistance = abs(nCellCenterX - pDefect->m_nUMCenterAlignX) + abs(nCellCenterY - pDefect->m_nUMCenterAlignY); // x,y í¸ì°¨ í©ê³ |
| | | |
| | | if (nMinDistance > nTempDistance) |
| | | { |
| | | nMinDistance = nTempDistance; |
| | | strDefectCellID.Format("%s%s", pData->GetGlassData()->m_strGlassID, pCell->m_strCellName); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // PADìì ì¸ ê²°í¨ì²ë¦¬ |
| | | else |
| | | { |
| | | if (pDefect->m_nCellIdx >= 0) { strDefectCellID.Format("%s%s", pData->GetGlassData()->m_strGlassID, pData->GetCellData(pDefect->m_nCellIdx)->m_strCellName); } |
| | | } |
| | | /* < KMH 20220728 : # MOD End > */ |
| | | /* < KJG 20220225 - #4000 ADD End >*/ |
| | | if (pData->GetGlassData()->m_nScanCoordinateY == 1) //ë¶íì¤ë¹ì ê²½ì° XYë°ì |
| | | { |
| | |
| | | { |
| | | fprintf(pf, ",%d", pDefect->m_sZoneValueSrcAvg[iz]); |
| | | } |
| | | fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d", |
| | | pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState); |
| | | /* < KMH 20220816 : #4271 MOD Start > */ |
| | | //fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d", |
| | | // pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState); |
| | | //fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness); |
| | | |
| | | fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness); |
| | | //fprintf(pf, "\n"); |
| | | fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d, %d", |
| | | pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDefectRScale, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState); |
| | | fprintf(pf, ", %d, %d, %d, %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness, pDefect->m_nCellGate, pDefect->m_nCellData, pDefect->m_nHliLevelIdx); |
| | | |
| | | fprintf(pf, "\n"); |
| | | /* < KMH 20220816 : #4271 MOD End > */ |
| | | } |
| | | } |
| | | AKLOG("MakeAnaFile Complete %s", strFilePathName); |
| | |
| | | enum ReKind { Re_Other, Re_TFE_CIRCLE, Re_PI_CONVEX, Re_PI_CONCAVE, Re_PI_1, Re_PI_2, Re_PI_3 }; |
| | | |
| | | //choigudal jude fix 2012.03.07 |
| | | enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown };/* <KYH 211129 : #3796 ADD Start> */ |
| | | enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown, Judge_SR};/* <KYH 211129 : #3796 ADD Start> */ /* < KJG 20221107 - #4360 MOD > SR íì ì¶ê°*/ |
| | | enum MAP16_DefectClass { CLASS_C1 = 1, CLASS_C2, CLASS_C3, CLASS_C4, CLASS_C5, CLASS_C6, CLASS_C7, CLASS_C8, CLASS_C9, CLASS_C10, CLASS_C11, CLASS_C12, CLASS_C13, CLASS_C14, CLASS_C15, CLASS_C16 }; |
| | | enum MAP16_SizeType { SIZE_SS = 0, SIZE_SM, SIZE_SL, SIZE_SOH, SIZE_IDX_MAX }; |
| | | enum MAP16_PeakType { PEEK_PS = 0, PEEK_PL, PEEK_PH, PEEK_POH, PEAK_IDX_MAX }; |
| | |
| | | Sleep(10); |
| | | } |
| | | } |
| | | /* < KJG 20221110 - #4373 ADD Start >*/ |
| | | auto CellIDSortFunc = [](const _grmCellData* lhs, const _grmCellData* rhs) { |
| | | // '0A' = 0, '0B' = 1, ..., '0Z' = 25, '00' = 26, ..., '09' = 35, '1A' = 36, ... |
| | | const int nAlphaSet = 'Z' - 'A' + 1; |
| | | const int nNumSet = '9' - '0' + 1; |
| | | const int nAlphaNumSet = nAlphaSet + nNumSet; |
| | | |
| | | CString str = lhs->m_strCellName; |
| | | char lhs_1st = str.Mid(str.GetLength() - 2, 1).GetAt(0); |
| | | char lhs_2st = str.Mid(str.GetLength() - 1, 1).GetAt(0); |
| | | |
| | | str = rhs->m_strCellName; |
| | | char rhs_1st = str.Mid(str.GetLength() - 2, 1).GetAt(0); |
| | | char rhs_2st = str.Mid(str.GetLength() - 1, 1).GetAt(0); |
| | | |
| | | auto GetCellValueFrom2stCellID = [&](char c) -> int { |
| | | if (c >= 'A' && c < 'Z') // 'A' ë 0ë¶í° |
| | | return c - 'A'; |
| | | else if (c >= '0' && c <= '9') // '0' ì 26 ë¶í° |
| | | return (c - '0') + nAlphaSet; |
| | | }; |
| | | return (lhs_1st - '0') * nAlphaNumSet + GetCellValueFrom2stCellID(lhs_2st) < (rhs_1st - '0') * nAlphaNumSet + GetCellValueFrom2stCellID(rhs_2st); |
| | | }; |
| | | /* < KJG 20221110 - #4373 ADD End >*/ |
| | | |
| | | CGlassRawCPJT::CGlassRawCPJT(void) |
| | | { |
| | |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | //CELL & DEFECT DATA |
| | | /* < KJG 20221110 - #4373 ADD Start >*/ |
| | | vector<_grmCellData*> vtSortCellData; |
| | | for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++) |
| | | vtSortCellData.push_back(pData->GetCellData(iCell)); |
| | | |
| | | sort(vtSortCellData.begin(), vtSortCellData.end(), CellIDSortFunc); |
| | | /* < KJG 20221110 - #4373 ADD End >*/ |
| | | { |
| | | |
| | | //make |
| | | { |
| | | for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++) |
| | | { |
| | | _grmCellData* pCell = pData->GetCellData(iCell); |
| | | /* < KJG 20221110 - #4373 MOD Start >*/ |
| | | //_grmCellData* pCell = pData->GetCellData(iCell); |
| | | _grmCellData* pCell = vtSortCellData[iCell]; |
| | | /* < KJG 20221110 - #4373 MOD End >*/ |
| | | makeDataCell(strLine, pData, pCell); |
| | | fprintf(pf, "%s\n", strLine); |
| | | |
| | | for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++) |
| | | { |
| | | _grmDefectData* pDefect = pData->GetDefectData(iDefect); |
| | | if (pDefect->m_nCellIdx != iCell) continue; |
| | | /* < KJG 20221110 - #4373 MOD Start >*/ |
| | | //if (pDefect->m_nCellIdx != iCell) continue; |
| | | if (pDefect->m_nCellIdx != pCell->m_nCellID) continue; |
| | | /* < KJG 20221110 - #4373 MOD End >*/ |
| | | //210203 CJH - CutOff ëì ê²°ê³¼íì¼ ìì± ì ì¸ |
| | | if (pDefect->m_bDefectCutoff == TRUE) continue; |
| | | |
| | |
| | | sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); |
| | | sprintf(pLocalFile, "%s", strFileName.GetBuffer(0)); |
| | | |
| | | CString strTime; |
| | | CString strServerSubRawFilePath= NULL; |
| | | CString strServerSubRawFileName = NULL; |
| | | { |
| | | strServerSubRawFilePath += NETWORK_AOIRAWFILE_SUB_PATH; |
| | | |
| | | CString strTime; |
| | | |
| | | CTime CurrTime = m_tmFileCreateTime; |
| | | strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"), |
| | | CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond()); |
| | |
| | | fprintf(pf, "SUMPATH= \n"); |
| | | fclose(pf); |
| | | } |
| | | /* < KJG 20230220 - #4403 ADD Start >*/ |
| | | // BLUE ì¤ë¹ D_COLL ë¯¸ë³´ê³ ìì¸ ë¶ìì ìí Result_info.ini íì¼ ë°±ì
ìì± |
| | | CString strPathBackUpDir, strPathBackUpFile; |
| | | strPathBackUpDir.Format(_T("%s%s"), LOCAL_RAWPATH_INFO_INI_PATH, _T("ResultInfoBackUpFile")); |
| | | strPathBackUpFile.Format(_T("%s_%s.ini"), strGlassID, strTime); |
| | | |
| | | CreateDirectory(strPathBackUpDir, NULL); |
| | | strPathBackUpFile.Format("%s\\%s", strPathBackUpDir, strPathBackUpFile); |
| | | CopyFile(strRawFilePathName, strPathBackUpFile, FALSE); |
| | | /* < KJG 20230220 - #4403 ADD End >*/ |
| | | } |
| | | break; |
| | | case FTPCMD_STACK: |
| | |
| | | /* < KMH 20220311 : #3954 ADD End > */ |
| | | case Judge_Unknown: sStr.Format("OK");//sStr.Format("Unknown"); //Unknownë ì¼ë¨ OK |
| | | break; |
| | | case Judge_SR: sStr.Format("SR"); /* < KJG 20221107 - #4360 ADD >*/ |
| | | break; |
| | | default: sStr.Format("OK");//sStr.Format("Ets"); |
| | | break; |
| | | } |
| | |
| | | pThis->m_nProcessState = RPS_ResultReadFail; |
| | | } |
| | | } |
| | | if (nReadFailCount) |
| | | Sleep(500); |
| | | /* < KMH 20220825 : #4278 MOD Start > */ |
| | | // CPU ì¬ì©ì¦ê° í´ê²° |
| | | //if (nReadFailCount) |
| | | // Sleep(500); |
| | | Sleep(500); |
| | | /* < KMH 20220825 : #4278 MOD End > */ |
| | | } |
| | | |
| | | pThis->m_nThreadStackFileReadFlag = 0; |
| | |
| | | |
| | | |
| | | } |
| | | if(nReadFailCount) |
| | | /* < KMH 20220825 : #4278 DEL Start > */ |
| | | // ë¶íì |
| | | //if(nReadFailCount) |
| | | /* < KMH 20220825 : #4278 DEL End > */ |
| | | |
| | | |
| | | Sleep(500); |
| | |
| | | SYSTEMTIME st; |
| | | GetLocalTime(&st); |
| | | char strFileName[256]; |
| | | sprintf(strFileName, "%s\\%02d%02d%02d","D:\\DIT_LogData", st.wYear, st.wMonth, st.wDay); |
| | | sprintf(strFileName, "%s\\%02d%02d%02d", "D:\\DIT_LogData", st.wYear, st.wMonth, st.wDay); |
| | | CreateDirectory(strFileName, NULL); |
| | | /*< KJG 20230706 - #4539 ADD End >*/ |
| | | |
| | |
| | | |
| | | void CakLoggerExt::LogFileOpen() |
| | | { |
| | | |
| | | char strFileName[256]; |
| | | |
| | | SYSTEMTIME st; |
| | |
| | | int m_nDefectNumJudgeRV; |
| | | int m_nDefectNumJudgeTR; |
| | | int m_nDefectNumJudgePR; |
| | | int m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/ |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | int m_nDefectNumJudgeLine; |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | |
| | | int m_nDefectNumJudgeRV; |
| | | int m_nDefectNumJudgeTR; |
| | | int m_nDefectNumJudgePR; |
| | | int m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/ |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | int m_nDefectNumJudgeLine; |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | |
| | | // case JudgeType_T8_BR: |
| | | // strType.Format(_T("BR")); |
| | | // break; |
| | | // case JudgeType_T8_PT: |
| | | // strType.Format(_T("PT")); |
| | | // break; |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | case JudgeType_T8_PT: |
| | | strType.Format(_T("PT")); |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | } |
| | | |
| | | if (strType.IsEmpty() == FALSE) |
| | |
| | | int m_nDefectNumJudgeRV; |
| | | int m_nDefectNumJudgeTR; |
| | | int m_nDefectNumJudgePR; |
| | | int m_nDefectNumJudgePT; //< KEJ 20231123 - #4669 ADD > |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | int m_nDefectNumJudgeLine; |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | |
| | | int m_nDefectNumJudgeRV; |
| | | int m_nDefectNumJudgeTR; |
| | | int m_nDefectNumJudgePR; |
| | | int m_nDefectNumJudgePT; //< KEJ 20231123 - #4669 ADD > |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | int m_nDefectNumJudgeLine; |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | |
| | | enum CPJT_GANTRY_TYPE { GantryType_Left, GantryType_Right }; |
| | | |
| | | enum Judgement_CPJT { |
| | | Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_Unknown_CPJT |
| | | // Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_Unknown_CPJT |
| | | Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_ND_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_LN_CPJT, Judge_Unknown_CPJT, Judge_SR_CPJT ////< KEJ 20231123 - #4669 MOD > |
| | | }; |
| | | enum JudgeCode_CPJT { |
| | | TRDF_CPJT = 0, BATR_CPJT, DOBB_CPJT, DOBS_CPJT, DOWW_CPJT, DOWB_CPJT, DOWS_CPJT |
| | |
| | | int nCount = pRcpReviewInfo->GetRcpJudgeCellDefectCount(); |
| | | int nOK; |
| | | |
| | | int nCellTRJudge = 0, nCelllOKJuge = 0, nCelllPRJuge = 0; |
| | | int nCellTRJudge = 0, nCelllOKJuge = 0, nCelllPRJuge = 0, nCelllPTJuge = 0; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] Start Cell Defect Rejudge")); |
| | | for (int nCellIndex = 0; nCellIndex < nCellCount; nCellIndex++) |
| | | { |
| | |
| | | { |
| | | nCelllPRJuge = nCelllPRJuge + 1; |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT) |
| | | { |
| | | nCelllPTJuge = nCelllPTJuge + 1; |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | |
| | | BOOL bReJudge = FALSE, bSubReJudge = FALSE; |
| | | |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPRCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePR, pRcpJudgeInfo->GetJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | case JudgeType_T8_PT: |
| | | if (pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT >= pRcpJudgeInfo->GetJudgeCount()) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell DefectPTCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount()); |
| | | bReJudge = TRUE; |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPTCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | } |
| | | |
| | | // 2nd condition |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPRCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePR, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | case JudgeType_T8_PT: |
| | | if (pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT <= pRcpJudgeInfo->GetSubJudgeCount()) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell DefectPTCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | bSubReJudge = TRUE; |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPTCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | } |
| | | |
| | | if (bReJudge & bSubReJudge) |
| | |
| | | { |
| | | nCelllOKJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge,nCelllPRJuge); |
| | | } |
| | | else if (pRawData->GetCellData(nCellIndex)->m_nJudgement==Judge_PR_CPJT) |
| | |
| | | { |
| | | nCelllPRJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT) |
| | | { |
| | | int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement; |
| | | pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_TR_CPJT; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]") |
| | | , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode()); |
| | | |
| | | |
| | | nCelllPTJuge -= 1; |
| | | nCellTRJudge += 1; |
| | | |
| | | if (nCelllPTJuge < 0) |
| | | { |
| | | nCelllPTJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | else |
| | | { |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx,_T("TR"), _T("TR")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | } |
| | | else if (pRcpJudgeInfo->GetReJudgeType() == JudgeType_T8_PR) |
| | |
| | | { |
| | | nCelllOKJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_TR_CPJT) |
| | | { |
| | |
| | | { |
| | | nCellTRJudge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT) |
| | | { |
| | | int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement; |
| | | pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PR_CPJT; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]") |
| | | , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode()); |
| | | |
| | | |
| | | nCelllPTJuge -= 1; |
| | | nCelllPRJuge += 1; |
| | | |
| | | if (nCelllPTJuge < 0) |
| | | { |
| | | nCelllPTJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | else |
| | | { |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx, _T("PR"), _T("PR")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | else if (pRcpJudgeInfo->GetReJudgeType() == JudgeType_T8_PT) |
| | | { |
| | | if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT) |
| | | { |
| | | int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement; |
| | | pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]") |
| | | , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode()); |
| | | |
| | | |
| | | nCelllOKJuge -= 1; |
| | | nCelllPTJuge += 1; |
| | | |
| | | if (nCelllOKJuge < 0) |
| | | { |
| | | nCelllOKJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_TR_CPJT) |
| | | { |
| | | int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement; |
| | | pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]") |
| | | , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode()); |
| | | |
| | | |
| | | nCellTRJudge -= 1; |
| | | nCelllPTJuge += 1; |
| | | |
| | | if (nCellTRJudge < 0) |
| | | { |
| | | nCellTRJudge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PR_CPJT) |
| | | { |
| | | int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement; |
| | | pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]") |
| | | , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode()); |
| | | |
| | | |
| | | nCelllPRJuge -= 1; |
| | | nCelllPTJuge += 1; |
| | | |
| | | if (nCelllPRJuge < 0) |
| | | { |
| | | nCelllPRJuge = 0; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | else |
| | | { |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx, _T("PT"), _T("PT")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | else//OK |
| | | { |
| | | if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT || pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_Unknown_CPJT) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx,_T("OK"), _T("OK")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | } |
| | | else |
| | | { |
| | |
| | | nCelllPRJuge = 0; |
| | | } |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT) |
| | | { |
| | | nCelllOKJuge += 1; |
| | | nCelllPTJuge -= 1; |
| | | |
| | | if (nCelllPTJuge < 0) |
| | | { |
| | | nCelllPTJuge = 0; |
| | | } |
| | | } |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]") |
| | | , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge); |
| | | |
| | | } |
| | | } |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PR Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePR, pRcpJudgeInfo->GetJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | case JudgeType_T8_PT: |
| | | if (pRawData->GetGlassData()->m_nDefectNumJudgePT >= pRcpJudgeInfo->GetJudgeCount()) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]GLASS Defect PT Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount()); |
| | | bReJudge = TRUE; |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PT Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | |
| | | } |
| | | |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PR Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePR, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD Start > */ |
| | | case JudgeType_T8_PT: |
| | | if (pRawData->GetGlassData()->m_nDefectNumJudgePT <= pRcpJudgeInfo->GetSubJudgeCount()) |
| | | { |
| | | bSubReJudge = TRUE; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]GLASS Defect PT Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | else { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PT Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | break; |
| | | /* < KEJ 20231123 - #4669 ADD End > */ |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | #include <vector> |
| | | |
| | | enum JudgeType_T8 { JudgeType_T8_None=0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR, JudgeType_T8_PT,*/ JudgeType_T8_Count }; |
| | | //enum JudgeType_T8 { JudgeType_T8_None = 0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR, JudgeType_T8_PT,*/ JudgeType_T8_Count }; |
| | | enum JudgeType_T8 { JudgeType_T8_None = 0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR,*/ JudgeType_T8_PT, JudgeType_T8_Count }; //< KEJ 20231123 - #4669 MOD > |
| | | |
| | | class AFX_EXT_CLASS CRcpJudgeInfo |
| | | { |