| | |
| | | } |
| | | strcpy(pData->GetGlassData()->m_strPath, LOCAL_AOIRAWBIN_PATH); |
| | | |
| | | |
| | | if(!WriteBinFile(pData)) |
| | | return FALSE; |
| | | |
| | | |
| | | if (1) ReadMuraFile(pData); |
| | | |
| | | |
| | | if (WriteAOIFile(pData) == FALSE) |
| | | return FALSE; |
| | | |
| | |
| | | |
| | | strcpy(pData->GetGlassData()->m_strPath, LOCAL_AOIRAWBIN_PATH); |
| | | |
| | | pData->GetGlassData()->m_tmReviewLoading = m_tmReviewStart; |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | |
| | | m_bReviewEndCheck = TRUE; |
| | | m_tmReviewEnd = m_tmReviewStart = CTime::GetCurrentTime(); |
| | | m_tmFileCreateTime = CTime::GetCurrentTime(); |
| | | pData->GetGlassData()->m_tmReviewEnd = m_tmReviewEnd; |
| | | |
| | | //여기에서 라인별로 파일명, 혹은 Path 위치 결정하면됨. AOIServer 혹은 ReviewServer에서 안해도됨 [김태현2019/9/4] |
| | | pData->GetGlassData()->m_strFileName; |
| | |
| | | |
| | | BOOL CGlassRawCPJT::MakeAOIFile( CgrmGlassRawData* pData ) |
| | | { |
| | | AKLOG("MakeAOIFile Start"); |
| | | m_nWriteRawDefectIdx = 1; |
| | | |
| | | _grmGlassData* pGlass = pData->GetGlassData(); |
| | |
| | | |
| | | strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR TB TW RB RW T_STACK MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT BR_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT"; //53ea |
| | | strLine += strValue; strLine += "\n"; |
| | | strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY PORTION"; //24ea result 0404nwh 삭제 : S_DEFECT CRACK P_SHIFT |
| | | strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 CORNER_GRAY_0 AVG_AMP_0 FFT_VAR_0 FFT_VAH_0 FFT_VAQ_0 FFT_PK_0 AVG_GRAY_1 PORTION_1 CORNER_GRAY_1 AVG_AMP_1 FFT_VAR_1 FFT_VAH_1 FFT_VAQ_1 FFT_PK_1 AVG_GRAY_2 PORTION_2 CORNER_GRAY_2 AVG_AMP_2 FFT_VAR_2 FFT_VAH_2 FFT_VAQ_2 FFT_PK_2 AVG_GRAY_3 PORTION_3 CORNER_GRAY_3 AVG_AMP_3 FFT_VAR_3 FFT_VAH_3 FFT_VAQ_3 FFT_PK_3"; //54ea 21-06-21 Mura Data 추가 |
| | | strLine += strValue; strLine += "\n"; |
| | | //210405 |
| | | //ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG SCAN_AI REVIEW_AI INS_MODE INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK |
| | | strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK"; //49ea |
| | | strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea |
| | | strLine += strValue; |
| | | |
| | | } |
| | |
| | | // 31 6 T_STACK // Panel 정보 08 SD+SP 수 입력 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumStackSD + pGlassData->m_nDefectNumStackSP); |
| | | //32 6 BMDF // Panel 정보 09 -> 변경 MAX_AVG_GRAY 04/12 nwh |
| | | SPRINTRAW(12, "%5.4f", pGlassData->m_fMaxAvgGray); |
| | | if (strlen(pGlassData->m_strMaxAvgGray) == 0) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "%s", pGlassData->m_strMaxAvgGray); |
| | | } |
| | | // 33 6 CJ // Panel 정보 10 -> 변경 MAX_PORTION 04/12 nwh |
| | | SPRINTRAW(12, "%5.6f", pGlassData->m_fMaxPortion); |
| | | if (strlen(pGlassData->m_strMaxPortion) == 0) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "%s", pGlassData->m_strMaxPortion); |
| | | } |
| | | // 34 6 OK_CELL // OK Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 35 6 RJ_CELL // RJ Cell Count |
| | |
| | | { |
| | | SPRINTRAW(16, "*"); |
| | | } |
| | | else |
| | | else if(strlen(pGlassData->m_strRecipeName) <= 16) |
| | | { |
| | | SPRINTRAW(16, "%s", pGlassData->m_strRecipeName); |
| | | } |
| | | else if (strlen(pGlassData->m_strRecipeName) > 16) |
| | | { |
| | | CString temp = pGlassData->m_strRecipeName; // 레시피 17자리 넘어가면 DCOLL 발생으로 예외처리 [ 21-06-02 KJG ] |
| | | temp = temp.Left(16); |
| | | SPRINTRAW(16, "%s", temp.GetBuffer(0)); |
| | | } |
| | | |
| | | // 52 12 SHRINK // Server or Frame Shrink 동작 여부 |
| | | if (strlen(pGlassData->m_strShrinked) == 0) |
| | | { |
| | |
| | | SPRINTRAW(12,"*"); |
| | | } |
| | | |
| | | // 23 6 CRACK -> 23 6 AVG_GRAY 변경 |
| | | SPRINTRAW(12, "%5.4f", pCellData->m_fAvgGray); |
| | | // 23 12 AVG_GRAY_0 |
| | | if (strlen(pCellData->m_strAvgGray_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 24 12 PORTION_0 |
| | | if (strlen(pCellData->m_strPortion_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 24 6 P_SHIFT ->24 6 PORTION |
| | | SPRINTRAW(12, "%5.6f", pCellData->m_fPortion); |
| | | //kyh 0622 |
| | | // 25 12 CORNER_GRAY_0 |
| | | if (strlen(pCellData->m_strCorner_Gray_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 26 12 AVG_AMP_0 |
| | | if (strlen(pCellData->m_strAvgAmp_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 27 12 FFT_VAR_0 |
| | | if (strlen(pCellData->m_strFFTVar_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 28 12 FFT_VAH_0 |
| | | if (strlen(pCellData->m_strFFTVah_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 29 12 FFT_VAQ_0 |
| | | if (strlen(pCellData->m_strFFTVaq_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 30 12 FFT_PK_0 |
| | | if (strlen(pCellData->m_strFFTPK_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 31 12 AVG_GRAY_1 |
| | | if (strlen(pCellData->m_strAvgGray_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 32 12 PORTION_1 |
| | | if (strlen(pCellData->m_strPortion_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 33 12 CORNER_GRAY_1 |
| | | if (strlen(pCellData->m_strCorner_Gray_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 34 12 AVG_AMP_1 |
| | | if (strlen(pCellData->m_strAvgAmp_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 35 12 FFT_VAR_1 |
| | | if (strlen(pCellData->m_strFFTVar_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 36 12 FFT_VAH_1 |
| | | if (strlen(pCellData->m_strFFTVah_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 37 12 FFT_VAQ_1 |
| | | if (strlen(pCellData->m_strFFTVaq_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 38 12 FFT_PK_1 |
| | | if (strlen(pCellData->m_strFFTPK_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 39 12 AVG_GRAY_2 |
| | | if (strlen(pCellData->m_strAvgGray_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 40 12 PORTION_2 |
| | | if (strlen(pCellData->m_strPortion_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 41 12 CORNER_GRAY_2 |
| | | if (strlen(pCellData->m_strCorner_Gray_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 42 12 AVG_AMP_2 |
| | | if (strlen(pCellData->m_strAvgAmp_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 43 12 FFT_VAR_2 |
| | | if (strlen(pCellData->m_strFFTVar_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 44 12 FFT_VAH_2 |
| | | if (strlen(pCellData->m_strFFTVah_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 45 12 FFT_VAQ_2 |
| | | if (strlen(pCellData->m_strFFTVaq_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 46 12 FFT_PK_2 |
| | | if (strlen(pCellData->m_strFFTPK_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 47 12 AVG_GRAY_3 |
| | | if (strlen(pCellData->m_strAvgGray_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 48 12 PORTION_3 |
| | | if (strlen(pCellData->m_strPortion_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 49 12 CORNER_GRAY_3 |
| | | if (strlen(pCellData->m_strCorner_Gray_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 50 12 AVG_AMP_3 |
| | | if (strlen(pCellData->m_strAvgAmp_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 51 12 FFT_VAR_3 |
| | | if (strlen(pCellData->m_strFFTVar_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 52 12 FFT_VAH_3 |
| | | if (strlen(pCellData->m_strFFTVah_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 53 12 FFT_VAQ_3 |
| | | if (strlen(pCellData->m_strFFTVaq_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 54 12 FFT_PK_3 |
| | | if (strlen(pCellData->m_strFFTPK_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | SPRINTRAWEND; //중요!!! 젤 마지막에 꼭 있어야함!!!(삭제금지) [김태현2020/9/23] |
| | | } |
| | |
| | | nValue = nValue << 1; |
| | | } |
| | | SPRINTRAW(12, "%04X", nValue); |
| | | |
| | | // 22 12 DEFECT_SIZE // Common 04 불량 크기 (L,H,M,S) |
| | | if (pDefectData->m_DefectSizeType == SizeType_Small) |
| | | { |
| | |
| | | // 49 12 Frame Shrink 정보 추가 |
| | | SPRINTRAW(12, "%d", pDefectData->m_bShrinked); |
| | | |
| | | // 50 12 CLASS_NO // Zone Classification NO |
| | | // Zone Data |
| | | nValue = 0; |
| | | for (int i = 15; i >= 0; i--) |
| | | { |
| | | if (pDefectData->m_sZoneClassPixelCount[i] > 0) |
| | | nValue += 1; |
| | | if (i > 0) |
| | | nValue = nValue << 1; |
| | | } |
| | | SPRINTRAW(12, "%04X", nValue); |
| | | |
| | | SPRINTRAWEND; //중요!!! 젤 마지막에 꼭 있어야함!!!(삭제금지) [김태현2020/9/23] |
| | | |