From ea59e5356f149db6e6e2e3f063aa5ee10a44b68e Mon Sep 17 00:00:00 2001 From: KEJ <kimeungju@diteam.co.kr> Date: 금, 24 11월 2023 17:39:42 +0900 Subject: [PATCH] Ongoing80 #4669 CF AOI Review Glass Grade PT판정 처리 추가 1. Glass, Cell PT 판정 추가. 2. GlassRawMessenger 데이터 추가 3. GlassRawMessenger 동기화 --- DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp | 643 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 531 insertions(+), 112 deletions(-) diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp index 675e17c..64660aa 100644 --- a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp +++ b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp @@ -30,6 +30,14 @@ #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) @@ -37,9 +45,9 @@ 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) @@ -50,6 +58,30 @@ 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) { @@ -57,6 +89,20 @@ 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); @@ -70,21 +116,87 @@ 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(); @@ -106,11 +218,14 @@ } 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; @@ -118,9 +233,68 @@ _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; } @@ -204,6 +378,8 @@ strcpy(pData->GetGlassData()->m_strPath, LOCAL_AOIRAWBIN_PATH); + pData->GetGlassData()->m_tmReviewLoading = m_tmReviewStart; + return TRUE; } @@ -213,12 +389,13 @@ 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; @@ -246,6 +423,7 @@ BOOL CGlassRawCPJT::SequenceFtpUpload(char* pRawFilePathName) { + AKLOG(" Sequence : FTP Upload Signal Start "); // Manual Upload 湲곕뒫 [21-02-05 KJG] CTime tmFileCreate; _grmGlassData GlassData; @@ -318,7 +496,7 @@ fclose(pf); - + AKLOG(" Sequence : FTP Upload Signal End "); return TRUE; } @@ -338,6 +516,7 @@ BOOL CGlassRawCPJT::MakeAOIFile( CgrmGlassRawData* pData ) { + AKLOG("MakeAOIFile Start"); m_nWriteRawDefectIdx = 1; _grmGlassData* pGlass = pData->GetGlassData(); @@ -353,7 +532,7 @@ } 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); @@ -381,26 +560,41 @@ ////////////////////////////////////////////////////////////////////////// //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)); } ////////////////////////////////////////////////////////////////////////// //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; @@ -427,21 +621,46 @@ { 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; @@ -496,7 +715,7 @@ 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 遺덈웾 �닔 - �젅�떆�뵾 �씠由� */ @@ -687,29 +906,56 @@ 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, "*"); @@ -739,8 +985,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); @@ -749,10 +999,17 @@ { 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) { @@ -772,6 +1029,27 @@ 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] } @@ -801,7 +1079,7 @@ 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 */ @@ -812,7 +1090,10 @@ 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醫뚰몴 諛섎� // 肄붾꼫而� 湲곗��쑝濡� 寃곌낵�뙆�씪 醫뚰몴媛� �깮�꽦�릺�뒗�뜲 怨좉컼�궗�뿉 紐낇솗�븳 �솗�씤 �븘�슂 @@ -874,22 +1155,42 @@ // 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] } @@ -916,7 +1217,7 @@ // 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) @@ -947,7 +1248,10 @@ // 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); @@ -1039,10 +1343,13 @@ } // 16 2 STACK_COUNT // Count of Defect detected step SPRINTRAW(2, "%2d", pDefectData->m_nStackStepCount); - // 17 60 STACK_STEP // Flow(Step) of defect detection + // 17 60 -> 400 STACK_STEP // Flow(Step) of defect detection if (strlen(pDefectData->m_strStackFirst)) { - SPRINTRAW(60, "%s", pDefectData->m_strStackFirst); + /* < KMH 20220712 : #4230 MOD Start > */ + //SPRINTRAW(60, "%s", pDefectData->m_strStackFirst); + SPRINTRAW(400, "%s", pDefectData->m_strStackFirst); + /* < KMH 20220712 : #4230 MOD End > */ } else { @@ -1058,8 +1365,18 @@ { 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 �엯�젰 @@ -1073,6 +1390,7 @@ nValue = nValue << 1; } SPRINTRAW(12, "%04X", nValue); + // 22 12 DEFECT_SIZE // Common 04 遺덈웾 �겕湲� (L,H,M,S) if (pDefectData->m_DefectSizeType == SizeType_Small) { @@ -1176,13 +1494,13 @@ 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); @@ -1292,6 +1610,17 @@ // 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] @@ -1395,10 +1724,10 @@ 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 ) @@ -1437,31 +1766,36 @@ 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); @@ -1474,7 +1808,7 @@ 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; @@ -1482,9 +1816,20 @@ 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) @@ -1523,9 +1868,19 @@ 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 >*/ } @@ -1579,9 +1934,20 @@ 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; } @@ -1616,7 +1982,7 @@ 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, "*.*"); } @@ -1717,12 +2083,13 @@ 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()); @@ -1758,6 +2125,16 @@ 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: @@ -1774,23 +2151,41 @@ 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, "*.*"); @@ -1858,6 +2253,10 @@ 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"); @@ -1870,7 +2269,13 @@ 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; + case Judge_SR: sStr.Format("SR"); /* < KJG 20221107 - #4360 ADD >*/ break; default: sStr.Format("OK");//sStr.Format("Ets"); break; @@ -1902,6 +2307,20 @@ } 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) { -- Gitblit v1.9.3