| | |
| | | #define NETWORK_MURARAW_PATH "\\\\126.100.100.1\\d\\DIT_ResultData\\Mura\\RAW" //0405nwh |
| | | #define NETWORK_MURA_IMAGE_PATH "\\\\126.100.100.1\\d\\DIT_ResultData\\Mura\\IMG" //0405nwh |
| | | |
| | | //KYH Stack Local 경로 추가 |
| | | #define NETWORK_AOISTACKLOCAL_PATH "\\\\126.100.100.1\\d\\DIT_ResultData\\Stack" |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | #define NETWORK_AOIRAWMERGELOCAL_PATH "D:\\DIT_ResultData\\RawMerge" |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | /* <KMH 20220407 : #4053 ADD Start> */ |
| | | #define LOCAL_LOGDATA_PATH "D:\\DIT_LogData" |
| | | /* <KMH 20220407 : #4053 ADD End> */ |
| | | char* g_pCellCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; |
| | | |
| | | void _TimeDelay(int delay) |
| | |
| | | MSG msg; |
| | | BOOL fRst = FALSE; |
| | | |
| | | clock_t lBlockTime = delay + clock(); |
| | | ULONGLONG lBlockTime = delay + GetTickCount64(); |
| | | |
| | | while (lBlockTime > clock()) |
| | | while (lBlockTime > GetTickCount64()) |
| | | { |
| | | fRst = (BOOL)PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); |
| | | if (fRst) |
| | |
| | | CreateDirectory(LOCAL_AOIRAWDFS_PATH, NULL); |
| | | CreateDirectory(LOCAL_AOIRAWBIN_PATH, NULL); |
| | | CreateDirectory("D:\\Raw_im", NULL); |
| | | |
| | | /* <KMH 20220407 : #4053 ADD Start> */ |
| | | CFileFind FileFinder; |
| | | SYSTEMTIME st; |
| | | GetLocalTime(&st); |
| | | char strLogFolderPath [256]; |
| | | sprintf(strLogFolderPath, "%s\\%02d%02d%02d", LOCAL_LOGDATA_PATH,st.wYear, st.wMonth, st.wDay); |
| | | |
| | | BOOL bFind = FileFinder.FindFile(strLogFolderPath); |
| | | if (!bFind) |
| | | { |
| | | CreateDirectory(strLogFolderPath, NULL); |
| | | } |
| | | /* <KMH 20220407 : #4053 ADD End> */ |
| | | m_MuraResultFile.readOptionFile("C:\\DIT_Review\\ReviewServerConfig\\MacroInfo.cfg"); |
| | | |
| | | m_GlassRawRTMS.SetMuraResult(&m_MuraResultFile); |
| | |
| | | |
| | | BOOL CGlassRawCPJT::SequenceGlassLoading( CgrmGlassRawData* pData ) |
| | | { |
| | | //스택기능 |
| | | |
| | | AKLOG("Sequence : Glass Loading Signal Start ");/* <KMH 20220407 : #4053 ADD > */ |
| | | SetEnableFtpAck(FALSE); |
| | | m_nRawMergeIdx = 0; |
| | | if(m_StackResult.getStackUse()) |
| | | { |
| | | |
| | | CString strStackFileLocalPath; |
| | | strStackFileLocalPath.Format("%s\\%s", NETWORK_AOISTACKLOCAL_PATH, pData->GetGlassData()->m_strGlassID); |
| | | |
| | | CFileFind File; |
| | | |
| | | if (File.FindFile(strStackFileLocalPath)) |
| | | { |
| | | File.FindNextFile(); |
| | | strStackFileLocalPath = File.GetFilePath(); |
| | | /* <KMH 20220407 : #4053 MOD Start> */ |
| | | if (DeleteFile(strStackFileLocalPath)) |
| | | /*< SWK 20220413 - #4053 MOD Start >*/ |
| | | // { |
| | | // AKLOG(" Fucntion : Delete Stack File Sucess[%s] ", strStackFileLocalPath); |
| | | // } |
| | | // /* <KMH 20220407 : #4053 MOD End> */ |
| | | // Sleep(10); |
| | | // } |
| | | // else |
| | | // { |
| | | // AKLOG(" Function : Delete Stack File Fail [%s]", strStackFileLocalPath);/* <KMH 20220407 : #4053 MOD > */ |
| | | // } |
| | | AKLOG(" Function : Delete Stack File Sucess[%s] ", strStackFileLocalPath); |
| | | else |
| | | AKLOG(" Function : Delete Stack File Fail [%s]", strStackFileLocalPath); |
| | | } |
| | | /*< SWK 20220413 - #4053 MOD End >*/ |
| | | |
| | | //201218 CJH - Stack Download 시도 |
| | | SendMessageFTPDownloadStack(pData->GetGlassData()); |
| | | |
| | | m_StackResult.StackFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | } |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | if (pData->GetGlassData()->m_bRawMergeUse) |
| | | { |
| | | CString strRawFileLocalPath; |
| | | strRawFileLocalPath.Format("%s\\%s", NETWORK_AOIRAWMERGELOCAL_PATH, pData->GetGlassData()->m_strGlassID); |
| | | CFileFind File; |
| | | if (File.FindFile(strRawFileLocalPath)) |
| | | { |
| | | File.FindNextFile(); |
| | | strRawFileLocalPath = File.GetFilePath(); |
| | | /* <KMH 20220407 : #4053 MOD Start> */ |
| | | if (DeleteFile(strRawFileLocalPath)) |
| | | /*< SWK 20220413 - #4053 MOD Start >*/ |
| | | // { |
| | | // AKLOG(" Fucntion : Delete RawMerge File Sucess[%s] ", strRawFileLocalPath); |
| | | // } |
| | | // /* <KMH 20220407 : #4053 MOD End> */ |
| | | // Sleep(10); |
| | | // } |
| | | // else |
| | | // { |
| | | // AKLOG(" Function : Delete RawMerge File Fail [%s]", strRawFileLocalPath); /* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | AKLOG(" Function : Delete RawMerge File Sucess[%s] ", strRawFileLocalPath); |
| | | else |
| | | AKLOG(" Function : Delete RawMerge File Fail [%s]", strRawFileLocalPath); |
| | | } |
| | | /*< SWK 20220413 - #4053 MOD End >*/ |
| | | SetEnableFtpAck(TRUE); |
| | | DownLoadMergeFile(pData); |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | AKLOG("Sequence : Glass Loading Signal End "); |
| | | return TRUE; |
| | | } |
| | | |
| | | BOOL CGlassRawCPJT::SequenceInspectEnd( CgrmGlassRawData* pData ) |
| | | { |
| | | AKLOG(" Sequence : InspectionEnd Signal Start"); /* <KMH 20220407 : #4053 ADD > */ |
| | | |
| | | m_bReviewEndCheck = FALSE; |
| | | //210128 |
| | | m_tmReviewEnd = m_tmReviewStart = CTime::GetCurrentTime(); |
| | |
| | | } |
| | | strcpy(pData->GetGlassData()->m_strPath, LOCAL_AOIRAWBIN_PATH); |
| | | |
| | | |
| | | if(!WriteBinFile(pData)) |
| | | return FALSE; |
| | | |
| | | if (1) ReadMuraFile(pData); |
| | | |
| | | //if(1) ReadMuraFile(pData); 211012 KJG - QD Macro 개별 업로드 하므로 Macro 데이터 적제 제거 요청 |
| | | |
| | | |
| | | if (WriteAOIFile(pData) == FALSE) |
| | | return FALSE; |
| | | |
| | |
| | | _TimeDelay(5000); // 이미지 복사 시간 대기 |
| | | //210218 CJH - 검사 종료시 결과파일 및 CCD Image 업로드 |
| | | SendMessageFTPUploadRaw(pData->GetGlassData()); |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE); |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_MURA_IMAGE);//0405nwh |
| | | |
| | | /* <KYH 211129 : #3806 ADD Start> */ |
| | | char pServerPath[256] = {}; |
| | | char pServerFile[256] = {}; |
| | | |
| | | CString strGlassID = pData->GetGlassData()->m_strGlassID; |
| | | CString strGlassIDLevel6th = strGlassID.Left(6); |
| | | CString strStepID = pData->GetGlassData()->m_strStepID; |
| | | CString strProcessID = pData->GetGlassData()->m_strProcessID; |
| | | CString strFileName; |
| | | |
| | | strcpy(pServerFile, "*.*"); |
| | | |
| | | strFileName.Format("%s", strGlassID); |
| | | strFileName.MakeLower(); |
| | | |
| | | sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); |
| | | |
| | | strStepID.MakeLower(); |
| | | strGlassID.MakeLower(); |
| | | strGlassIDLevel6th.MakeLower(); |
| | | strProcessID.MakeLower(); |
| | | |
| | | // if (strGlassID.GetLength() > 6) |
| | | // sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID); |
| | | // else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | /* <KYH 211129 : #3806 ADD End> */ |
| | | |
| | | |
| | | BOOL bIsBDI = strcmp((pData->GetGlassData()->m_strLine), _T("BDI")) == 0 ? TRUE : FALSE; |
| | | if (bIsBDI) |
| | | { |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE); |
| | | |
| | | /* <KYH 211129 : #3806 ADD Start> */ |
| | | CString strRawFilePathName = NULL; |
| | | CString strLine = NULL; |
| | | strRawFilePathName += LOCAL_RAWPATH_INFO_INI_PATH; |
| | | strRawFilePathName += RAWINFO_FILE_NAME; |
| | | FILE* pf = fopen(strRawFilePathName.GetBuffer(0), "w"); |
| | | if (pf != NULL) |
| | | { |
| | | strLine = pServerPath + strFileName; |
| | | fprintf(pf, "[RESULT_PATH]\n"); |
| | | fprintf(pf, "RAWPATH= X:\%s\n", strLine.GetBuffer(0)); |
| | | SetRawFilePath(strLine.GetBuffer(0)); |
| | | fprintf(pf, "SUMPATH= \n"); |
| | | fprintf(pf, "IMGPATH= Z:\%s\n", strLine.GetBuffer(0)); |
| | | fprintf(pf, "DISK=FILESERVER\n"); |
| | | fclose(pf); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_MURA_IMAGE);/* <KMH 20220407 : #4053 ADD > */ |
| | | } |
| | | |
| | | /* <KYH 211129 : #3806 ADD End> */ |
| | | |
| | | |
| | | AKLOG(" Sequence : InspectionEnd Signal End"); /* <KMH 20220407 : #4053 ADD > */ |
| | | return TRUE; |
| | | } |
| | | |
| | |
| | | |
| | | 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; |
| | | strcpy(pData->GetGlassData()->m_strPath, NETWORK_AOIRAWDFS_PATH); |
| | | |
| | | if(1) ReadMuraFile(pData); |
| | | //if(1) ReadMuraFile(pData); 211012 KJG - QD Macro 개별 업로드 하므로 Macro 데이터 적제 제거 요청 |
| | | |
| | | if(WriteAOIFile(pData) == FALSE) |
| | | return FALSE; |
| | |
| | | |
| | | BOOL CGlassRawCPJT::SequenceFtpUpload(char* pRawFilePathName) |
| | | { |
| | | AKLOG(" Sequence : FTP Upload Signal Start "); |
| | | // Manual Upload 기능 [21-02-05 KJG] |
| | | CTime tmFileCreate; |
| | | _grmGlassData GlassData; |
| | |
| | | |
| | | fclose(pf); |
| | | |
| | | |
| | | AKLOG(" Sequence : FTP Upload Signal End "); |
| | | return TRUE; |
| | | } |
| | | |
| | |
| | | |
| | | BOOL CGlassRawCPJT::MakeAOIFile( CgrmGlassRawData* pData ) |
| | | { |
| | | AKLOG("MakeAOIFile Start"); |
| | | m_nWriteRawDefectIdx = 1; |
| | | |
| | | _grmGlassData* pGlass = pData->GetGlassData(); |
| | |
| | | } |
| | | |
| | | strFilePathName.Format("%s\\%s", pGlass->m_strPath, strFileName);//pGlass->m_strFileName); |
| | | //strFilePathName.Format("C:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | //strFilePathName.Format("D:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | |
| | | // 글라스 ID만 존재하여 재검사 시 파일 생성 실패. 삭제한다 |
| | | DeleteFile(strFilePathName); |
| | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | //GLASSDATA |
| | | { |
| | | makeDataGlass(strLine, pGlass); |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //makeDataGlass(strLine, pGlass); |
| | | makeDataGlass(strLine, pData, pGlass); |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | fprintf(pf, "%s\n", strLine.GetBuffer(0)); |
| | | } |
| | | |
| | |
| | | { |
| | | strLine.Empty(); |
| | | CString strValue; |
| | | |
| | | 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 |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //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 NG TB TW RB RW T_STACK NO_DEFECT 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 LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; |
| | | /* < KMH 20220613 : #3957 MOD Start > */ |
| | | /* <LJC 20220425 : #3957 MOD Start> */ |
| | | // 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 NG TB TW RB RW T_STACK NO_DEFECT MAX_NG 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 LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT CODE_COUNT1 CODE_COUNT2 CODE_COUNT3 CODE_COUNT4 CODE_COUNT5 CODE_COUNT6 CODE_COUNT7 CODE_COUNT8 CODE_COUNT9 CODE_COUNT10"; //56ea |
| | | 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 NG TB TW RB RW T_STACK NO_DEFECT MAX_NG 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 LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; //56ea |
| | | for (int i = 0; i < RAW_CODE_MAX; i++) |
| | | { |
| | | CString strDefectCode = pGlassData->m_strRawDefectCode[i]; |
| | | if (strDefectCode == "") { strDefectCode = "*"; } |
| | | strValue += " " + strDefectCode; |
| | | } |
| | | /* <LJC 20220425 : #3957 MOD End> */ |
| | | /* < KMH 20220613 : #3957 MOD End > */ |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | 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 |
| | | /* < KMH 20220614 : #3957 MOD Start > */ |
| | | /* <LJC 20220425 : #3957 MOD Start> */ |
| | | //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 LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT CODE_COUNT1 CODE_COUNT2 CODE_COUNT3 CODE_COUNT4 CODE_COUNT5 CODE_COUNT6 CODE_COUNT7 CODE_COUNT8 CODE_COUNT9 CODE_COUNT10"; //31ea /* <KYH 211129 : #3796 MOD Start> */ |
| | | 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 LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT"; //56ea |
| | | for (int i = 0; i < RAW_CODE_MAX; i++) |
| | | { |
| | | CString strDefectCode = pGlassData->m_strRawDefectCode[i]; |
| | | if (strDefectCode == "") { strDefectCode = "*"; } |
| | | strValue += " " + strDefectCode; |
| | | } |
| | | /* <LJC 20220425 : #3957 MOD End> */ |
| | | /* < KMH 20220614 : #3957 MOD End > */ |
| | | 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 LINE_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; |
| | | |
| | | } |
| | | #define SPRINTRAWSTART char strItemValue[1024];int nItemValueLen, nItemValuePos = 0;memset(strItemValue, ' ', sizeof(char)*1024) |
| | | #define SPRINTRAW(ITEMSIZE, fmt, ...) nItemValueLen = sprintf(strItemValue+nItemValuePos, fmt,##__VA_ARGS__); strItemValue[nItemValuePos+ nItemValueLen] = ' ';nItemValuePos+=ITEMSIZE+1 |
| | | #define SPRINTRAWEND strItemValue[nItemValuePos - 1] = 0; strLine = strItemValue |
| | | void CGlassRawCPJT::makeDataGlass( CString& strLine, _grmGlassData* pGlassData ) |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //void CGlassRawCPJT::makeDataGlass( CString& strLine, _grmGlassData* pGlassData ) |
| | | void CGlassRawCPJT::makeDataGlass( CString& strLine, CgrmGlassRawData* pData, _grmGlassData* pGlassData ) |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | { |
| | | SPRINTRAWSTART; |
| | | |
| | |
| | | 46 12 PAD_DATA // PAD Data 불량 수 |
| | | 47 12 M_DEFECT // MASK 불량 수 |
| | | 48 12 C_DEFECT // COMMON 불량 |
| | | 49 12 BR_DEFECT // SCRATCH 불량 수 |
| | | 49 12 BR_DEFECT // SCRATCH 불량 수 => LN_DEFECT // 라인성 불량 수 |
| | | 50 12 CRACK // Crack 불량 수 - Image 촬상 갯수 |
| | | 51 12 P_SHIFT // Pattern Shift 불량 수 - 레시피 이름 |
| | | */ |
| | |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeTR); |
| | | // 26 6 PR // Panel 정보 03 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgePR); |
| | | // 27 6 TB // Panel 정보 04 |
| | | // 27 6 NG // Panel 정보 04 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeNG); /* <KYH 211129 : #3796 ADD Start> */ |
| | | // 28 6 TB // Panel 정보 04 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeTB); |
| | | // 28 6 TW // Panel 정보 05 |
| | | // 29 6 TW // Panel 정보 05 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeTW); |
| | | // 29 6 RB // Panel 정보 06 |
| | | // 30 6 RB // Panel 정보 06 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeRB); |
| | | // 30 6 RW // Panel 정보 07 |
| | | // 31 6 RW // Panel 정보 07 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeRW); |
| | | // 31 6 T_STACK // Panel 정보 08 SD+SP 수 입력 |
| | | // 32 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); |
| | | // 33 6 CJ // Panel 정보 10 -> 변경 MAX_PORTION 04/12 nwh |
| | | SPRINTRAW(12, "%5.6f", pGlassData->m_fMaxPortion); |
| | | // 34 6 OK_CELL // OK Cell Count |
| | | // 33 6 NO_DEFECT // Panel 정보 09 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeND); /* <KYH 211129 : #3796 ADD Start> */ |
| | | //34 6 BMDF // Panel 정보 10 -> 변경 MAX_AVG_GRAY 04/12 nwh |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //if (strlen(pGlassData->m_strMaxAvgGray) == 0) |
| | | //{ |
| | | // SPRINTRAW(12, "*"); |
| | | //} |
| | | //else |
| | | //{ |
| | | // SPRINTRAW(12, "%s", pGlassData->m_strMaxAvgGray); |
| | | //} |
| | | int nMaxCellNG = 0; |
| | | for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++) |
| | | { |
| | | _grmCellData* pCell = pData->GetCellData(iCell); |
| | | nMaxCellNG = max(nMaxCellNG, pCell->m_nDefectNumJudgeNG); |
| | | } |
| | | SPRINTRAW(12, "%d", nMaxCellNG); |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | // 35 6 CJ // Panel 정보 11 -> 변경 MAX_PORTION 04/12 nwh |
| | | if (strlen(pGlassData->m_strMaxPortion) == 0) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "%s", pGlassData->m_strMaxPortion); |
| | | } |
| | | // 36 6 OK_CELL // OK Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 35 6 RJ_CELL // RJ Cell Count |
| | | // 37 6 RJ_CELL // RJ Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 36 6 RW_CELL // RW Cell Count |
| | | // 38 6 RW_CELL // RW Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 37 6 NR_CELL // NR Cell Count |
| | | // 39 6 NR_CELL // NR Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 38 6 MASK_CELL // MASK Cell Count //201215 CJH - CSTID로 변경 |
| | | // 40 6 MASK_CELL // MASK Cell Count //201215 CJH - CSTID로 변경 |
| | | if (strlen(pGlassData->m_strCSTID) == 0) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeMD); |
| | | // 48 6 C_DEFECT // COMMON 불량 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeCD); |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | // 49 6 S_DEFECT // SCRATCH 불량 수 |
| | | SPRINTRAW(12, "*"); |
| | | //SPRINTRAW(12, "*"); |
| | | // 49 6 LN_DEFECT // Line 불량 수 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeLine); |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | | // 50 6 CRACK // Crack 불량 수 //201217 CJH - Image 촬상 개수로 변경 |
| | | //SPRINTRAW(12, "%d", pGlassData->m_nDefectNumLocCrack); |
| | | SPRINTRAW(12, "%d", pGlassData->m_nReviewNum); |
| | |
| | | { |
| | | 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, "UNUSE"); |
| | | } |
| | | |
| | | if (pGlassData->m_bEdgeCrackUse) |
| | | { |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumLocCrack); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "UNUSE"); |
| | | } |
| | | /* <LJC 20220425 : #3957 ADD Start> */ |
| | | for (int i = 0; i < RAW_CODE_MAX; i++) |
| | | { |
| | | if (pGlassData->m_nDefectCode[i] >= 0) |
| | | { |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectCode[i]); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | } |
| | | /* <LJC 20220425 : #3957 ADD End> */ |
| | | SPRINTRAWEND; //중요!!! 젤 마지막에 꼭 있어야함!!!(삭제금지) [김태현2020/9/23] |
| | | } |
| | | |
| | |
| | | 19 12 PAD_DATA // PAD Data Defect Count |
| | | 20 12 M_DEFECT // MASK Defect Count |
| | | 21 12 C_DEFECT // COMMON Defect Count |
| | | 22 12 S_DEFECT // SCRATCH Defect Count |
| | | 22 12 S_DEFECT // SCRATCH Defect Count ==> LN_DEFECT |
| | | 23 12 CRACK // CRACK Defect Count |
| | | 24 12 P_SHIFT // Pattern Shift Defect Count |
| | | */ |
| | |
| | | SPRINTRAW(8, "SUBPANEL"); |
| | | // 03 12 SUBPANELID // Subpanel ID |
| | | //SPRINTRAW(12, "%d", pCellData->m_nCellID); |
| | | SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pCellData->m_nCellID / 36, g_pCellCode[pCellData->m_nCellID % 36]); |
| | | /* < KMH 20220609 : #4183 MOD Start > */ |
| | | //SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pCellData->m_nCellID / 36, g_pCellCode[pCellData->m_nCellID % 36]); |
| | | SPRINTRAW(12, "%s%s", pData->GetGlassData()->m_strGlassID, pCellData->m_strCellName); |
| | | /* < KMH 20220609 : #4183 MOD End > */ |
| | | |
| | | // 글라스 원점 기준 Y좌표 반대 |
| | | // 코너컷 기준으로 결과파일 좌표가 생성되는데 고객사에 명확한 확인 필요 |
| | |
| | | // 21 6 C_DEFECT // COMMON Defect Count |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeCD); |
| | | |
| | | // 22 6 S_DEFECT -> 22 6 PRO_IMAGE 변경 nwh0404 |
| | | if (strlen(pCellData->m_strProImage)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strProImage); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12,"*"); |
| | | } |
| | | /* <KYH 211129 : #3796 MOD Start> */ |
| | | |
| | | // 23 6 CRACK -> 23 6 AVG_GRAY 변경 |
| | | SPRINTRAW(12, "%5.4f", pCellData->m_fAvgGray); |
| | | |
| | | // 24 6 P_SHIFT ->24 6 PORTION |
| | | SPRINTRAW(12, "%5.6f", pCellData->m_fPortion); |
| | | |
| | | // 22 6 PRO_IMAGE -> LN_DEFECT 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeLine); |
| | | // 23 6 AVG_GRAY -> TR 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeTR); |
| | | // 24 6 PORTION -> PR 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgePR); |
| | | // 25 6 CORNER_GRAY -> NG 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeNG); |
| | | // 26 6 AVG_AMP -> RB 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeRB); |
| | | // 27 6 FFT_VAR -> RW 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeRW); |
| | | // 28 6 TB 추가 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeTB); //KYH TB 데이터 추가 |
| | | // 29 6 TW 추가 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeTW); //KYH TW 데이터 추가 |
| | | // 30 6 FFT_VEH -> T_STACK 변경 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectSDCount + pCellData->m_nDefectSPCount); |
| | | // 31 6 NO_DEFECT 추가 |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeND); //KYH ND 데이터 추가 |
| | | /* <KYH 211129 : #3796 MOD End> */ |
| | | /* <LJC 20220425 : #3957 ADD Start> */ |
| | | for (int i = 0; i < RAW_CODE_MAX; i++) |
| | | { |
| | | if (pCellData->m_nDefectCode[i] >= 0) |
| | | { |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectCode[i]); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | } |
| | | /* <LJC 20220425 : #3957 ADD End> */ |
| | | SPRINTRAWEND; //중요!!! 젤 마지막에 꼭 있어야함!!!(삭제금지) [김태현2020/9/23] |
| | | } |
| | | |
| | |
| | | // 16 2 STACK_COUNT // Count of Defect detected step |
| | | // 17 60 STACK_STEP // Flow(Step) of defect detection |
| | | // 18 16 IMAGE_FILE // Image file Name |
| | | // 19 12 DSC Code |
| | | // 19 12 DSC Code ==> LINE_CODE |
| | | // 20 12 Image 분류 Code |
| | | // 21 12 불량이 위치한 Zone No 입력 |
| | | // 22 12 불량 크기 (L,H,M,S) |
| | |
| | | // 02 6 DEFECT // DEFECT |
| | | SPRINTRAW(6, "DEFECT"); |
| | | // 03 12 ID // Subpanel ID |
| | | SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefectData->m_nCellIdx / 36, g_pCellCode[pDefectData->m_nCellIdx % 36]); |
| | | /* < KMH 20220609 : #4183 MOD Start > */ |
| | | //SPRINTRAW(12, "%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefectData->m_nCellIdx / 36, g_pCellCode[pDefectData->m_nCellIdx % 36]); |
| | | SPRINTRAW(12, "%s%s", pData->GetGlassData()->m_strGlassID, pDefectData->m_strCellName); |
| | | /* < KMH 20220609 : #4183 MOD End > */ |
| | | // 04 5 DEF_NO // Defect Number of Panel |
| | | // RAW 파일용 Defect Index |
| | | //SPRINTRAW(5, "%d", pDefectData->m_nDefectIdx); |
| | |
| | | { |
| | | SPRINTRAW(16, "*"); |
| | | } |
| | | // 19 12 DSC_CODE // Common 01 DSC Code |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | // 19 12 DSC_CODE // Common 01 DSC Code ==> LINE_CODE |
| | | if (strlen(pDefectData->m_strLNDefectCode)) |
| | | { |
| | | SPRINTRAW(12, "%s", pDefectData->m_strLNDefectCode); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | //SPRINTRAW(12, "*"); |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | | // 20 12 VC_CODE // Common 02 Image 분류 Code |
| | | SPRINTRAW(12, "*"); |
| | | // 21 12 ZONE_NO // Common 03 불량이 위치한 Zone No 입력 |
| | |
| | | nValue = nValue << 1; |
| | | } |
| | | SPRINTRAW(12, "%04X", nValue); |
| | | |
| | | // 22 12 DEFECT_SIZE // Common 04 불량 크기 (L,H,M,S) |
| | | if (pDefectData->m_DefectSizeType == SizeType_Small) |
| | | { |
| | |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 32 NO USE -> CCD Image 유무 |
| | | if (strlen(pDefectData->m_strAoiImageName)) |
| | | if (strrchr(pDefectData->m_strAoiImageName, '*') != NULL || strlen(pDefectData->m_strAoiImageName) < 4) // KYH 210826 CCD 이미지 문자열에서 *이 있을경우 X 머지할것 |
| | | { |
| | | SPRINTRAW(12, "O"); |
| | | SPRINTRAW(12, "X"); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "X"); |
| | | SPRINTRAW(12, "O"); |
| | | } |
| | | // 33 12 CAM_POSITION // Common 15 Scan 번호 |
| | | SPRINTRAW(12, "%d", pDefectData->m_nScanIdx); |
| | |
| | | // 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] |
| | | |
| | |
| | | cds.lpData = &upParam; |
| | | |
| | | DWORD dwReturn = 0; |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 30000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | { |
| | | } |
| | | |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 5000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | AKLOG(" FunCtion FTP : RAW File Upload Signal Fail[%d]", FTPCMD_RAW);/* <KMH 20220407 : #4053 ADD > */ |
| | | else |
| | | AKLOG(" FunCtion FTP : RAW File Upload Signal Sucess[%d]", FTPCMD_RAW);/* <KMH 20220407 : #4053 ADD > */ |
| | | } |
| | | |
| | | void CGlassRawCPJT::SendMessageFTPDownloadStack( _grmGlassData* pGlassData ) |
| | |
| | | cds.lpData = &upParam; |
| | | |
| | | DWORD dwReturn = 0; |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | { |
| | | } |
| | | if (SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 5000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | /*< SWK 20220413 - #4053 MOD Start >*/ |
| | | // { |
| | | // AKLOG(" Fucntion FTP : Stack File Download Signal Fail[%d]", FTPCMD_STACK);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | // else |
| | | // { |
| | | // AKLOG(" Fucntion FTP : Stack File Download Signal Sucess[%d]", FTPCMD_STACK);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | AKLOG(" Function FTP : Stack File Download Signal Fail[%d]", FTPCMD_STACK); |
| | | else |
| | | AKLOG(" Function FTP : Stack File Download Signal Success[%d]", FTPCMD_STACK); |
| | | /*< SWK 20220413 - #4053 MOD End >*/ |
| | | } |
| | | |
| | | void CGlassRawCPJT::SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData ) |
| | | { |
| | | if(pGlassData == NULL) return; |
| | | HWND hWnd = ::FindWindow(NULL, "FTPDownloader"); |
| | | HWND hWnd = ::FindWindow(NULL, "FTPUploader"); |
| | | if(hWnd == NULL) return; |
| | | |
| | | char strServerFolder[256] = {}; |
| | | char strServerFile[256] = {}; |
| | | char strLocalFolder[256] = {}; |
| | | char pLocalFile[256] = {}; |
| | | |
| | | //GetFormatDescription(FTPCMD_DATAFILE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData); |
| | | { |
| | | CString strGlassIDOrg = pGlassData->m_strGlassID; |
| | | CString strGlassID = strGlassIDOrg.Left(12); |
| | | sprintf(strServerFolder, "%s", pGlassData->m_strCassetteSequenceNo); |
| | | sprintf(strServerFile, "%s.dat", strGlassID.GetBuffer(0)); |
| | | sprintf(strLocalFolder, "D:\\DIT_ResultData\\DownloadData"); |
| | | sprintf(pLocalFile, "%s.dat", strGlassID.GetBuffer(0)); |
| | | } |
| | | char pLocalFile[256] = {}; |
| | | char strRTMSFile[32] = {}; |
| | | char strServerRawFileSubPath[256] = {}; |
| | | char strServer_SubFileName[256] = {}; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | GetFormatDescription(FTPCMD_RAWMERGE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, strRTMSFile, strServerRawFileSubPath, strServer_SubFileName, pGlassData); |
| | | |
| | | CFTPCopyDataParam upParam; |
| | | strcpy(upParam.m_strServer_FolderName, strServerFolder); |
| | |
| | | upParam.m_nSendResultCode = FALSE;//m_ctrlResultAck.GetCheck(); |
| | | upParam.m_nProcessType = CFTPCopyDataParam::FTPProcessType_DownFile; |
| | | // [C-PRJ] Image Upload Define - KHT (2020/11/19) |
| | | upParam.m_nDataType = CFTPCopyDataParam::FTPDataType_Unknown; |
| | | upParam.m_nDataType = CFTPCopyDataParam::FTPDataType_Raw; |
| | | |
| | | COPYDATASTRUCT cds; |
| | | cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload; |
| | |
| | | cds.lpData = &upParam; |
| | | |
| | | DWORD dwReturn = 0; |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | { |
| | | } |
| | | if (SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 5000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | /*< SWK 20220413 - #4053 MOD Start >*/ |
| | | // { |
| | | // AKLOG(" Fucntion FTP : RawMerge File Download Signal Sucess[%d]", FTPCMD_RAWMERGE);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | // else |
| | | // { |
| | | // AKLOG(" Fucntion FTP : RawMerge File Download Signal Fail[%d]", FTPCMD_RAWMERGE);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | AKLOG(" Function FTP : RawMerge File Download Signal Fail[%d]", FTPCMD_RAWMERGE); |
| | | else |
| | | AKLOG(" Function FTP : RawMerge File Download Signal Success[%d]", FTPCMD_RAWMERGE); |
| | | /*< SWK 20220413 - #4053 MOD End >*/ |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | } |
| | | |
| | | void CGlassRawCPJT::SendMessageFTPUploadImage( _grmGlassData* pGlassData, emFTPCommand sort) |
| | |
| | | cds.lpData = &upParam; |
| | | |
| | | DWORD dwReturn = 0; |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | { |
| | | } |
| | | if (SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 5000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | /*< SWK 20220413 - #4053 MOD Start >*/ |
| | | // { |
| | | // AKLOG(" Fucntion FTP : Image Upload Signla Sucess[%d]", sort);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | // else |
| | | // { |
| | | // AKLOG(" Fucntion FTP : Image Upload Signla Fail[%d]", sort);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | AKLOG(" Function FTP : Image Upload Signal Fail[%d]", sort); |
| | | else |
| | | AKLOG(" Function FTP : Image Upload Signal Success[%d]", sort); |
| | | /*< SWK 20220413 - #4053 MOD End >*/ |
| | | } |
| | | |
| | | |
| | |
| | | cds.lpData = &upParam; |
| | | |
| | | DWORD dwReturn = 0; |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | { |
| | | } |
| | | if (SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 5000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | /*< SWK 20220413 - #4053 MOD Start >*/ |
| | | // { |
| | | // AKLOG(" Fucntion FTP : Index File Upload Signla Sucess[%d]", FTPCMD_INDEX);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | // else |
| | | // { |
| | | // AKLOG(" Fucntion FTP : Index File Upload Signla Fail[%d]", FTPCMD_INDEX);/* <KMH 20220407 : #4053 ADD > */ |
| | | // } |
| | | AKLOG(" Function FTP : Index File Upload Signal Fail[%d]", FTPCMD_INDEX); |
| | | else |
| | | AKLOG(" Function FTP : Index File Upload Signal Success[%d]", FTPCMD_INDEX); |
| | | /*< SWK 20220413 - #4053 MOD End >*/ |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | |
| | | else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_AOI_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | sprintf(pLocalPath, "%s%s", NETWORK_AOI_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | | strcpy(pLocalFile, "*.*"); |
| | | } |
| | |
| | | sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); |
| | | } |
| | | break; |
| | | |
| | | case FTPCMD_MURA_IMAGE: //0404nwh |
| | | { // |
| | | /*CTime time = m_tmFileCreateTime; |
| | | sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), |
| | | strGlassIDLevel5th.GetBuffer(0), |
| | | strGlassIDLevel8th.GetBuffer(0), |
| | | strGlassID.GetBuffer(0)); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | | strcpy(pLocalFile, "*.*");*/ |
| | | |
| | | if (strGlassID.GetLength() > 6) |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID); |
| | | else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | case FTPCMD_RAWMERGE: |
| | | { |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | char cMergeList[10][12]; |
| | | CString strMergeList[10] = {}; |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | strcpy(cMergeList[i], pGlassData->m_StrMergeList[i]); |
| | | strMergeList[i] = cMergeList[i]; |
| | | } |
| | | sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strMergeList[m_nRawMergeIdx],strGlassIDLevel6th.GetBuffer(0)); // 서버 경로 확인후 수정 kjg |
| | | sprintf(pServerFile, "%s",strGlassID); |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | sprintf(pLocalPath, "%s", m_RawMergeResult.getRawMergeLocalPath()); |
| | | sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); |
| | | } |
| | | break; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | case FTPCMD_MURA_IMAGE: //0404nwh |
| | | { // |
| | | /*CTime time = m_tmFileCreateTime; |
| | | sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), |
| | | strGlassIDLevel5th.GetBuffer(0), |
| | | strGlassIDLevel8th.GetBuffer(0), |
| | | strGlassID.GetBuffer(0)); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | | strcpy(pLocalFile, "*.*");*/ |
| | | |
| | | if (strGlassID.GetLength() > 6) |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID); |
| | | else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | |
| | | break; |
| | | case Judge_PR: sStr.Format("PR"); |
| | | break; |
| | | /* <KYH 220117 : #3796 ADD Start>*/ |
| | | case Judge_ND: sStr.Format("ND"); |
| | | break; |
| | | /* <KYH 220117 : #3796 ADD End>*/ |
| | | case Judge_PT: sStr.Format("PT"); |
| | | break; |
| | | case Judge_Review: sStr.Format("RV"); |
| | |
| | | break; |
| | | case Judge_Rework: sStr.Format("RW"); |
| | | break; |
| | | /* < KMH 20220311 : #3954 ADD Start > */ |
| | | case Judge_LN: sStr.Format("LN"); |
| | | break; |
| | | /* < KMH 20220311 : #3954 ADD End > */ |
| | | case Judge_Unknown: sStr.Format("OK");//sStr.Format("Unknown"); //Unknown도 일단 OK |
| | | break; |
| | | default: sStr.Format("OK");//sStr.Format("Ets"); |
| | |
| | | } |
| | | return sStr; |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | void CGlassRawCPJT::DownLoadMergeFile(CgrmGlassRawData * pData) |
| | | { |
| | | SendMessageFTPDownloadDataFile(pData->GetGlassData()); |
| | | m_nRawMergeIdx++; |
| | | return; |
| | | } |
| | | |
| | | void CGlassRawCPJT::SearchFIle(CgrmGlassRawData * pData) |
| | | { |
| | | m_RawMergeResult.ProcessRawMergeFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | |
| | | |
| | | CString CGlassRawCPJT::GetWsiDefectType(int nType) |
| | | { |