#include "StdAfx.h" #include "ParsingGlassResult_CSOTF.h" using namespace CHReviewResult; CParsingGlassResult_CSOTF::CParsingGlassResult_CSOTF(void) { } CParsingGlassResult_CSOTF::~CParsingGlassResult_CSOTF(void) { } // [2017:5:12]-[WEZASW] : DFS Result File Format º¯°æ void CParsingGlassResult_CSOTF::ParsingFileToGlassResult(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { if(pGlassResult==NULL || pResultFileMgr==NULL) return; CString strItem = _T(""); CString strData = _T(""); // read cell(Panel) data CCellResult cellResult; int nDefectRawDataCount = pResultFileMgr->GetRawDataCount(eB7Raw_DefectInfoData, 0); int nTotalDefectIdx = 0; int nGlassIDLength = 0; int nCellCount = pResultFileMgr->GetCellCount(); for(int nCellIdx=0; nCellIdxGetRawData(eB7Raw_PanelInfoData, nCellIdx, 2); // No.1 Panel ID // [2017:6:4]-[WEZASW] : °í°´»ç ¿äû¿¡ ÀÇÇÑ DFS CellID Ç׸ñ ³»¿ë º¯°æ(Glass ID : 13 + CELL ID : 4)À¸·Î CELL¸¸ Ãëµæ. // (GlassID ¹× CellIDÀÇ ±æÀÌ¿¹¿Üó¸® Ãß°¡.) nGlassIDLength = (*pGlassResult->GetJobID()).GetLength();// pGlassResult->GetGlassID() -> pGlassResult->GetJobID() cellResult.strCellID = cellResult.strCellID.Mid(nGlassIDLength, cellResult.strCellID.GetLength()-nGlassIDLength); cellResult.strCellJudge = pResultFileMgr->GetRawData(eB7Raw_PanelInfoData, nCellIdx, 3); // No.2 Panel Judge // 20180424 smok. ¼¿ ÁÂÇ¥ º¯°æ // [2017:6:9]-[bhs] : ¼¿ x,yÃà º¯°æ(±Û¶ó½º ÁÂÇ¥°è¿Í ¹Ý´ë) cellResult.nUMOriginY = atoi(pResultFileMgr->GetRawData(eB7Raw_PanelInfoData, nCellIdx, 4)); // No.4 Panel Position Start Y cellResult.nUMOriginX = atoi(pResultFileMgr->GetRawData(eB7Raw_PanelInfoData, nCellIdx, 3)); // No.3 Panel Position Start X cellResult.nUMOriginX = cellResult.nUMOriginX + pGlassResult->GetGlassSizeX()/2; cellResult.nUMOriginY = cellResult.nUMOriginY + pGlassResult->GetGlassSizeY()/2; cellResult.nUMOriginHeight = atoi(pResultFileMgr->GetRawData(eB7Raw_PanelInfoData, nCellIdx, 6)); // No.6 Panel Size Height cellResult.nUMOriginWidth = atoi(pResultFileMgr->GetRawData(eB7Raw_PanelInfoData, nCellIdx, 5)); // No.5 Panel Size Width // Panel Summary cellResult.nDefectCount = atoi(pResultFileMgr->GetRawData(eB7Raw_PanelSumData, nCellIdx, 1)); // No.1 Total Detected Defect QTY pGlassResult->AddCellResult(cellResult); // Ãß°¡ // ¿¹¿Üó¸® : PNL Total ¼ö·®°ú ½ÇÁ¦ ºÒ·® °³¼ö È®ÀÎ if (nTotalDefectIdx+cellResult.nDefectCount > nDefectRawDataCount) { continue; } // [2017:5:15]-[WEZASW] : AOI °á°ú ÆÄÀÏ ¡®PNL_SUM'ÀÇ °áÇÔ¼ö·®°ú ¡®PNL_DFT_DATA'ÀÇ ¼ö·® »óÀÌ(ºÎºÐ Cell) // AOI °á°ú ÆÄÀÏÀÇ ¼ö·® º¯°æ »ç¿ëÁß. for (int nDefIdx=0; nDefIdxnDefectIdx = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 2)); // No.2 Defect No. pDefectResult->strDefectCode = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 3); // No.3 Defect Code pDefectResult->strDefectName = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 4); // No.4 Defect Name pDefectResult->strDefectType = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 5); // No.5 defect Type // [2017:5:23]-[WEZASW] : Glass Center Position·Î º¯°æ(Review ±âÁØ) /* °ËÅäÁß.. pDefectResult->nUMCenterOriginX = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 8)); // No.5 Primary X coordinate (um) (Align º¸Á¤ Àü) pDefectResult->nUMCenterOriginY = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 7)); // No.6 Primary Y coordinate(um) (Align º¸Á¤ Àü) pDefectResult->nUMOriginX = pDefectResult->nUMCenterOriginX + pGlassResult->GetGlassSizeX()/2; pDefectResult->nUMOriginY = pDefectResult->nUMCenterOriginY + pGlassResult->GetGlassSizeY()/2; pDefectResult->nUMTransX = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 7)); // No.7 Secondary X coordinate (um) (Align º¸Á¤ ÈÄ) pDefectResult->nUMTransY = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 8)); // No.8 Secondary Y coordinate (um) (Align º¸Á¤ ÈÄ)*/ //pDefectResult->nUMCenterOriginX = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 5)); // No.5 Primary X coordinate (um) //pDefectResult->nUMCenterOriginY = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 6)); // No.6 Primary Y coordinate(um) //pDefectResult->nUMOriginX = pDefectResult->nUMCenterOriginY + pGlassResult->GetGlassSizeX()/2; //pDefectResult->nUMOriginY = pDefectResult->nUMCenterOriginX + pGlassResult->GetGlassSizeY()/2; //pDefectResult->nUMTransX = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 7)); // No.7 Secondary X coordinate (um) //pDefectResult->nUMTransY = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 8)); // No.8 Secondary Y coordinate (um) //pDefectResult->strCellID = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 9); // No.9 Defected Panel ID // º¸Á¤ Àü ÁÂÇ¥ <-> º¸Á¤ ÈÄ ÁÂÇ¥ [2017.6.14 bhs] //pDefectResult->nUMCenterOriginX = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 7)); // No.5 Primary X coordinate (um) //pDefectResult->nUMCenterOriginY = atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 8)); // No.6 Primary Y coordinate(um) // B11 »ç¾ç¿¡ ¸ÂÃç PR_COORDI, SE_COORDI °¡ ¼öÁ¤ µÊ¿¡ µû¶ó ÁÂÇ¥ ¼ö½ÅºÎ º¯°æ. [2017.6.27 bhs] pDefectResult->nUMCenterOriginX = (int)atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 13)); // No.12 Tertiary X address(um) pDefectResult->nUMCenterOriginY = (int)atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 14)); // No.13 Tertiary Y address(um) pDefectResult->nUMOriginX = pGlassResult->GetGlassSizeX()/2 - pDefectResult->nUMCenterOriginY; pDefectResult->nUMOriginY = pGlassResult->GetGlassSizeY()/2 - pDefectResult->nUMCenterOriginX; pDefectResult->nUMTransX = (int)atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 6)); // No.7 Secondary X coordinate (um) pDefectResult->nUMTransY = (int)atof(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 7)); // No.8 Secondary Y coordinate (um) pDefectResult->strCellID = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 10); // No.9 Defected Panel ID pDefectResult->strMarkType = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 15); // No.14 POINT/LINE/RECT/CIRCLE/TRIANGLE/ARC // [2017:5:24]-[WEZASW] : AOI DFS(DFT) Ç׸ñ Ãß°¡(Index º¯°æ) pDefectResult->strSizeType = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 19); // No.18 AOI Defect Size Type (S/M/L/EX_L/UL_L) pDefectResult->nAOISizeW = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 20)); // No.19 Defect¡¯s X axis size (um) pDefectResult->nAOISizeH = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 21)); // No.20 Defect¡¯s Y axis size (um) pDefectResult->nAOISizeLength = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 22)); // No.21 Defect¡¯s Diagonal Length (um) pDefectResult->nAOIArea = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 23)); // No.22 Defect Area(um2) pDefectResult->nAOIPeak = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 24)); // No.23 Defect Peek pDefectResult->strDefectType1 = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 25); // No.24 Defect Type 1 (B : Black / W : White) pDefectResult->strDefectType2 = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 26); // No.25 Defect Type 2 (B : ÇϺÎÄ«¸Þ¶ó) pDefectResult->strDefectZone = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 27); // No.26 Defect Zone (AA/PAD/CRACK) // 20170831 smok Ç׸ñ Ãß°¡ DEFECT_ZONE(AA/PAD/CRACK) pDefectResult->nAOICameraIdx = atoi(pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 32)); // No.30 Camera number that detect defect pDefectResult->strStackType = pResultFileMgr->GetRawData(eB7Raw_DefectInfoData, nTotalDefectIdx, 34); // [2017:6:7]-[WEZASW] : if (pDefectResult->strDefectType1.Compare(_T("B")) == 0) { pDefectResult->nOpticType = DEFECT_OPTIC_DARK; pDefectResult->strOpticType = _T("TR"); } else if (pDefectResult->strDefectType1.Compare(_T("W")) == 0) { pDefectResult->nOpticType = DEFECT_OPTIC_BRIGHT; pDefectResult->strOpticType = _T("TR"); } else { pDefectResult->nOpticType = DEFECT_OPTIC_DARK; pDefectResult->strOpticType = _T("TR"); } // pDefectResult->nLocation & pDefectResult->nSubType ¿¡ ÀÇÇÑ ºÐ·® ºÐ·ù => °í°´»ç »ç¾ç Á¤ÀÇ¿¡ ´Þ¶ó Ãß°¡ ÁøÇà ÇÊ¿ä. // ¼öÁ¤Áß : ÃßÈÄ ºÒ·® À¯Çü ¹× ¿ì¼± ½®À§ Á¤·É »ç¾ç È®Á¤½Ã °³¼± ÇÊ¿ä. pDefectResult->nBF_Width = pDefectResult->nAOISizeW; // µðÆå width (¼¼·Î) BF Size or MNT Data 1 pDefectResult->nBF_Length = pDefectResult->nAOISizeH; // µðÆå Length (°¡·Î) BF Size or MNT Data 2 pDefectResult->nDF_Width = pDefectResult->nAOISizeW; // µðÆå width (¼¼·Î) DF Size pDefectResult->nDF_Length = pDefectResult->nAOISizeH; // µðÆå Length (°¡·Î) DF Size pDefectResult->nAOISize = pDefectResult->nAOISizeLength; pDefectResult->nBefore_SizeWidth = pDefectResult->nAOISizeW; // ±ÙÁ¢ µðÆå ¸ÓÁöÀü w,hÁß Å«°Í pDefectResult->nBefore_SizeHeight = pDefectResult->nAOISizeH; // (??) pDefectResult->nAfter_SizeWidth = pDefectResult->nAOISizeLength; // ±ÙÁ¢ µðÆå ¸ÓÁöÈÄ w,hÁß Å«°Í pDefectResult->nAfter_SizeHeight = pDefectResult->nAOISizeH; // (??) pDefectResult->dAfter_Area = pDefectResult->nAOIArea; // ¸ÓÁöµÈ ¸ðµç µðÆå Çü»óÀ» Àû¿ëÇÑ ¸éÀû pDefectResult->strStackType = pDefectResult->strStackType;//_T("TD"); // "TD","CD","SD" pDefectResult->nStackType = GetStackType(pDefectResult->strStackType); pDefectResult->strJudgeType = _T("NG"); // "OK","NG" pDefectResult->nJudgeType = GetJudgeType(pDefectResult->strJudgeType); nTotalDefectIdx++; // [2017:6:1]-[WEZASW] : IJP ¼³ºñ°æ¿ì MURA °á°ú±îÁö ÃëÇյǾî MICRO¸¸ ÇÊÅ͸µ // 20171003 smok. MURA ¼¼ºÎ °á°ú pass // 20171017 smok. MURA ¼¼ºÎ °á°ú pass -> °Ë»ç DENT PROTRUDE¿Í ±¸ºÐ if (pDefectResult->strDefectType.Compare(_T("MURA")) == 0) { continue; } if (pDefectResult->strDefectType.Compare(_T("VLINE")) == 0) { continue; } if (pDefectResult->strDefectType.Compare(_T("HLINE")) == 0) { continue; } if (pDefectResult->strDefectType.Compare(_T("SPOT")) == 0) { continue; } if (pDefectResult->strDefectType.Compare(_T("M_DENT")) == 0) { continue; } if (pDefectResult->strDefectType.Compare(_T("M_PROTRUDE")) == 0) { continue; } // [2017:6:5]-[WEZASW] : Lami AOI ¼³ºñÀÇ ÇϺΠºÒ·® ÇÊÅ͸µ.(»óºÎ¸¸ ¸®ºä ÁøÇà) if (pDefectResult->strDefectType2.Compare(_T("B")) == 0) { continue; } pDefectResult->nTotalDefectCount = nTotalDefectIdx - 1; pGlassResult->AddDefectResult(pDefectResult); } } } // [2017:5:12]-[WEZASW] : DFS Result File Format º¯°æ int CParsingGlassResult_CSOTF::ParsingReviewResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { if (pResultFileMgr==NULL || pGlassResult==NULL) return -1; // size count int pSizeCount[5] = {0, 0, 0, 0, 0}; // judge count int pJudgeCount[3] = {0, 0, 0}; // write defect data CString strImageFileName = _T(""); int nWriteCount = 0; for (int nCameraIdx=0; nCameraIdxGetReviewResultCount(); nCameraIdx++) { const CReviewResult* pCameraResult = pGlassResult->GetReviewResult(nCameraIdx); if (pCameraResult==NULL) continue; for (int nResultIdx=0; nResultIdxGetSReviewResultCount(); nResultIdx++) { const SReviewResult *pResult = pCameraResult->GetSReviewResult(nResultIdx); if (pResult==NULL) continue; if (pResult->nResultCode!=ReviewResult_Process_Complete) continue; if (pResult->nReviewType!=ReviewType_Review) continue; // review image file name int nSize = 0; char* strTemp = NULL; strImageFileName = pResult->strUploadImgFileName; #ifdef _UNICODE nSize = WideCharToMultiByte(CP_ACP, 0, strImageFileName.GetBuffer(), -1, NULL, 0, NULL,NULL); strTemp = new char[nSize]; WideCharToMultiByte(CP_ACP, 0, strImageFileName.GetBuffer(), -1, strTemp, nSize, NULL, NULL); #else nSize = strImageFileName.GetLength(); strTemp = new char[nSize+1]; memcpy(strTemp, strImageFileName.GetBuffer(), sizeof(char)*nSize); strTemp[nSize] = NULL; #endif if (pResult->nDefectIdx != -1) { // 20170831 smok Ç׸ñ Ãß°¡ DEFECT_ZONE(AA/PAD/CRACK) 31 -> 32 // [2017:5:24]-[WEZASW] : AOI DFS(DFT) Ç׸ñ Ãß°¡(Index º¯°æ) pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 32, strTemp); // No.31 Image File Name nWriteCount++; } if(strTemp) { delete[] strTemp; strTemp = NULL; } } } return nWriteCount; } int CParsingGlassResult_CSOTF::ParsingReviewResultDataCD(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { int nWriteCount = 0; return nWriteCount; } int CParsingGlassResult_CSOTF::ParsingReviewResultDataSD(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { int nWriteCount = 0; return nWriteCount; } // [2017:1:3]-[WEZASW] : WSI ÃøÁ¤ °á°ú ¾²±â (»ç¾ç ¹ÌÁ¤À¸·Î ±âº» ¼³Á¤) (ING) int CParsingGlassResult_CSOTF::ParsingWsiResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { if (pResultFileMgr==NULL || pGlassResult==NULL) return -1; // write defect data CString strImageFileName = _T(""); int nWriteCount = 0; for (int nCameraIdx=0; nCameraIdxGetWsiResultCount(); nCameraIdx++) { const CReviewResult* pCameraResult = pGlassResult->GetWsiResult(nCameraIdx); if (pCameraResult==NULL) continue; for (int nResultIdx=0; nResultIdxGetSReviewResultCount(); nResultIdx++) { const SReviewResult *pResult = pCameraResult->GetSReviewResult(nResultIdx); if (pResult==NULL) continue; if (pResult->nResultCode!=WsiResultSuccess) continue; if (pResult->nReviewType!=ReviewType_Wsi) continue; if (pResultFileMgr && pResult->nDefectIdx != -1) { // [2017:5:13]-[WEZASW] : 7°³ Ãß°¡ Ç׸ñÀ̾úÀ¸³ª °í°´»ç Á¦Ãâ½Ã(ÃÖÁ¾) »èÁ¦(¹Ì½º)µÇ¾î Á¦°øµÇ¾î °í°´»ç ȸ½ÅÀ¸·Î Ãß°¡ Ç׸ñ(13, 25, 26)¸¸ Àû¿ë Çϱâ·Î ±â¼úÆÀ(±èD) ÇùÀǵÊ. // [2017:5:24]-[WEZASW] : AOI DFS(DFT) Ç׸ñ Ãß°¡(Index º¯°æ) pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 15, int(pResult->pWsi_ResultData[Wsi_X_Height]*1000)); // No.13 Defect Height (um) pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 28, pResult->nWsi_ResultCode); // No.25 Measurement Code (Success:1 / fail:0) pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 29, int(pResult->pWsi_ResultData[Wsi_X_A_Ratio]*1000)); // No.26 Defect X axis Ration (um) nWriteCount++; } } } return nWriteCount; } int CParsingGlassResult_CSOTF::ParsingReflowResultData(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { if (pGlassResult==NULL || pResultFileMgr==NULL) return -1; // write reflow data CString strImageFileName = _T(""); int nWriteCount = 0; int nCommonReviewCnt = pGlassResult->GetDefectResultCount(); int nMNTCnt=0, nMNTPADCnt=0; // [2017:6:21][bhs] : bug fix for (int nCameraIdx=0; nCameraIdxGetUserResultCount(); nCameraIdx++) { const CReviewResult* pCameraResult = pGlassResult->GetUserResult(nCameraIdx); if (pCameraResult==NULL) continue; for (int nResultIdx=0; nResultIdxGetSReviewResultCount(); nResultIdx++) { const SReviewResult *pResult = pCameraResult->GetSReviewResult(nResultIdx); if (pResult==NULL) continue; if (pResult->nReviewType!=ReviewType_User) continue; if (pResult->nResultCode!=ReviewResult_Process_Complete) continue; if (pResult->nDefectIdx != -1) { int nSize = 0; char* strTemp = NULL; char strData[20] = {0,}; pResultFileMgr->SetUserDefectData(nResultIdx, 2, nCommonReviewCnt+nResultIdx+1); //4. CELL_ID //CString strCellID = pResult->strFullCellID; CString strCellID = pResult->strCellID; #ifdef _UNICODE nSize = WideCharToMultiByte(CP_ACP, 0, strCellID.GetBuffer(), -1, NULL, 0, NULL,NULL); strTemp = new char[nSize]; WideCharToMultiByte(CP_ACP, 0, strCellID.GetBuffer(), -1, strTemp, nSize, NULL, NULL); #else nSize = strCellID.GetLength(); strTemp = new char[nSize+1]; memcpy(strTemp, strCellID.GetBuffer(), sizeof(char)*nSize); strTemp[nSize] = NULL; #endif pResultFileMgr->SetUserDefectData(nResultIdx, 3, strTemp); //5. CELL_SIDE sprintf_s(strData, "ACT"); pResultFileMgr->SetUserDefectData(nResultIdx, 4, strData); //6,7. COORD_X1,Y1 pResultFileMgr->SetUserDefectData(nResultIdx, 5, pResult->nUMTransX); pResultFileMgr->SetUserDefectData(nResultIdx, 6, pResult->nUMTransY); //8,9. COORD_X2,Y2 pResultFileMgr->SetUserDefectData(nResultIdx, 7, pResult->nUMOriginX); pResultFileMgr->SetUserDefectData(nResultIdx, 8, pResult->nUMOriginY); //19,20,21 AREA_SCORE,DF_W,DF_L pResultFileMgr->SetUserDefectData(nResultIdx, 18, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 19, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 20, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 22, strData); //25,26,27,28,29,30,31,32,33,34,35,36,37 DFCT_CD_08~20 pResultFileMgr->SetUserDefectData(nResultIdx, 24, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 25, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 26, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 27, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 28, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 29, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 30, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 31, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 32, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 33, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 34, 0.0); pResultFileMgr->SetUserDefectData(nResultIdx, 35, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 36, 0.0); //38. ST sprintf_s(strData, "TD"); pResultFileMgr->SetUserDefectData(nResultIdx, 37, strData); //41. JUDGE sprintf_s(strData, "ND"); pResultFileMgr->SetUserDefectData(nResultIdx, 40, strData); //46~59. pResultFileMgr->SetUserDefectData(nResultIdx, 45, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 46, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 47, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 48, -10.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 49, 0); pResultFileMgr->SetUserDefectData(nResultIdx, 50, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 51, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 52, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 53, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 54, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 55, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 56, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 57, 0.00000); pResultFileMgr->SetUserDefectData(nResultIdx, 58, 0.00000); //43. IMAGE_FILE1 = IMAGE nSize = 0; if (strTemp) delete[] strTemp; strTemp = NULL; strImageFileName = pResult->strUploadImgFileName; #ifdef _UNICODE nSize = WideCharToMultiByte(CP_ACP, 0, strImageFileName.GetBuffer(), -1, NULL, 0, NULL,NULL); strTemp = new char[nSize]; WideCharToMultiByte(CP_ACP, 0, strImageFileName.GetBuffer(), -1, strTemp, nSize, NULL, NULL); #else nSize = strImageFileName.GetLength(); strTemp = new char[nSize+1]; memcpy(strTemp, strImageFileName.GetBuffer(), sizeof(char)*nSize); strTemp[nSize] = NULL; #endif pResultFileMgr->SetUserDefectData(nResultIdx, 42, strTemp); nWriteCount++; if(strTemp) { delete[] strTemp; strTemp = NULL; } } } } // write glass data for (int nGlass=0; nGlassGetGlassCount(); nGlass++) { pResultFileMgr->SetGlassData(nGlass, 58, nMNTCnt); pResultFileMgr->SetGlassData(nGlass, 59, nMNTPADCnt); } return nWriteCount; } int CParsingGlassResult_CSOTF::ParsingMeasureResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { return 0; } int CParsingGlassResult_CSOTF::GetDefectType(const CString& strValue) { if (strValue.Compare(_T("BD"))==0) { return DEFECT_TYPE_BD; //3 } else if (strValue.Compare(_T("B"))==0) { return DEFECT_TYPE_B; //2 } else if (strValue.Compare(_T("D"))==0) { return DEFECT_TYPE_D; //1 } else if (strValue.Compare(_T("PBD"))==0) { return DEFECT_TYPE_PBD; //3 } else if (strValue.Compare(_T("PB"))==0) { return DEFECT_TYPE_PB; //2 } else if (strValue.Compare(_T("PD"))==0) { return DEFECT_TYPE_PD; //1 } else if (strValue.Compare(_T("MNT"))==0) { return DEFECT_TYPE_MNT; } else if (strValue.Compare(_T("EC"))==0) { return DEFECT_TYPE_EC; } else if (strValue.Compare(_T("MURA"))==0) { return DEFECT_TYPE_MURA; } // 20171003 smok. MURA ¼¼ºÎ °á°ú else if (strValue.Compare(_T("VLINE"))==0) { return DEFECT_TYPE_VLINE; } else if (strValue.Compare(_T("HLINE"))==0) { return DEFECT_TYPE_HLINE; } else if (strValue.Compare(_T("SPOT"))==0) { return DEFECT_TYPE_SPOT; } else if (strValue.Compare(_T("DENT"))==0) { return DEFECT_TYPE_DENT; } else if (strValue.Compare(_T("PROTRUDE"))==0) { return DEFECT_TYPE_PROTRUDE; } return 0; } int CParsingGlassResult_CSOTF::GetGrayType(const CString& strValue) { if (strValue == "BRIGHT") return DEFECT_GRAY_WHITE; else return DEFECT_GRAY_BLACK; return DEFECT_GRAY_NONE; } CString CParsingGlassResult_CSOTF::GetGrayType(const int& nValue) { if (nValue == DEFECT_GRAY_BLACK) return _T("B"); else return _T("W"); return _T("NONE"); } int CParsingGlassResult_CSOTF::GetProcessType(const CString& strValue) { if (strValue == "M") return DEFECT_PROCESS_MASK; else if (strValue == "C") return DEFECT_PROCESS_COMMON; else if (strValue == "K") return DEFECT_PROCESS_CRACK; else return DEFECT_PROCESS_NORMAL; return DEFECT_PROCESS_NONE; } int CParsingGlassResult_CSOTF::GetSizeType(const CString& strValue) { if (strValue == "S") return DEFECT_SIZE_SMALL; else if (strValue == "M") return DEFECT_SIZE_MEDIUM; else if (strValue == "L") return DEFECT_SIZE_LARGE; else return DEFECT_SIZE_HUGE; return DEFECT_SIZE_NONE; } int CParsingGlassResult_CSOTF::GetStackType(const CString& strValue) { if (strValue == "") return DEFECT_STACK_NONE; else if (strValue == "CD") return DEFECT_STACK_CD; else if (strValue == "SD") return DEFECT_STACK_SD; else if (strValue == "TD") return DEFECT_STACK_TD; return DEFECT_STACK_NONE; } int CParsingGlassResult_CSOTF::GetJudgeType(const CString& strValue) { if (strValue == "R") return DEFECT_JUDGE_TR; else if (strValue == "X") return DEFECT_JUDGE_PR; else if (strValue == "W") return DEFECT_JUDGE_PR; else return DEFECT_JUDGE_OK; return DEFECT_JUDGE_NONE; } int CParsingGlassResult_CSOTF::GetOpticType(int nDefectType) { if (nDefectType==DEFECT_TYPE_BD || nDefectType==DEFECT_TYPE_PBD) { return DEFECT_OPTIC_DKBR; } else if (nDefectType==DEFECT_TYPE_D || nDefectType==DEFECT_TYPE_PD) { return DEFECT_OPTIC_DARK; } else if (nDefectType==DEFECT_TYPE_B || nDefectType==DEFECT_TYPE_PB) { return DEFECT_OPTIC_BRIGHT; } return 0; }