#include "StdAfx.h" #include "CHReviewResultParser/ParsingGlassResult_Simulation.h" using namespace CHReviewResult; CParsingGlassResult_Simulation::CParsingGlassResult_Simulation(IParsingGlassResultParent* pPGR2P) : CParsingGlassResult(pPGR2P) { } CParsingGlassResult_Simulation::~CParsingGlassResult_Simulation(void) { } void CParsingGlassResult_Simulation::ParsingFileToGlassResult(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { if(pGlassResult==NULL || pResultFileMgr==NULL) return; CString strItem = _T(""); CString strData = _T(""); int nItemIndex = 0; int nDataIndx = 0; pGlassResult->m_strLotID = pResultFileMgr->GetGlassData(0, 3); // read cell data CCellResult cellResult; int nCellCount = pResultFileMgr->GetCellCount(); for(int idx=0; idxGetCellData(idx, 2); strItem.TrimRight(); //cellResult.strCellID = strItem.Right(3); //cellResult.strCellID = strItem.Right(4).Left(3); cellResult.strCellID = strItem.Right(2).Left(2); cellResult.nUMOriginX = atoi(pResultFileMgr->GetCellData(idx, 3)); cellResult.nUMOriginY = atoi(pResultFileMgr->GetCellData(idx, 4)); cellResult.nUMOriginWidth = atoi(pResultFileMgr->GetCellData(idx, 5)); cellResult.nUMOriginHeight = atoi(pResultFileMgr->GetCellData(idx, 6)); pGlassResult->AddCellResult(cellResult); } // read defect data srand((unsigned)time(NULL)); int strLength = 0; int nDefectCount = pResultFileMgr->GetDefectCount(); CString strTemp = _T(""); for (int i=0; iGetDefectCount(); i++) { CDefectResult* pDefectResult = new CDefectResult; if (pDefectResult==NULL) continue; strItem = pResultFileMgr->GetDefectData(i, 2); // (2) CELL_ID strItem.TrimRight(); // pDefectResult->strCellID = strItem.Right(4).Left(3); pDefectResult->strCellID = strItem.Right(2).Left(2); pDefectResult->nDefectIdx = atoi(pResultFileMgr->GetDefectData(i, 3)); // (3) DEF_NO pDefectResult->nUMTransX = (rand()%(pGlassResult->GetGlassSizeX()/1000))*1000; // (4) COORD_X pDefectResult->nUMTransY = (rand()%(pGlassResult->GetGlassSizeY()/1000))*1000; // (5) COORD_Y pDefectResult->nUMOriginX = pDefectResult->nUMTransX; pDefectResult->nUMOriginY = pDefectResult->nUMTransY; // (6) GATELINE // (7) DATALINE pDefectResult->nAOISizeS = atoi(pResultFileMgr->GetDefectData(i, 8)); // (8) SIZE_S pDefectResult->nAOISizeW = atoi(pResultFileMgr->GetDefectData(i, 9)); // (9) SIZE_W pDefectResult->nAOISize = atoi(pResultFileMgr->GetDefectData(i, 10)); // (10) SIZE_L pDefectResult->nAOISizeH = atoi(pResultFileMgr->GetDefectData(i, 11)); // (11) SIZE_H // filtering judge type pDefectResult->strJudgeType = pResultFileMgr->GetDefectData(i, 12); // (12) GRADE (OK, PR, TR) pDefectResult->strJudgeType.TrimRight(); pDefectResult->nJudgeType = GetJudgeType(pDefectResult->strJudgeType); // judge type // filter defect code pDefectResult->strDefectCode = pResultFileMgr->GetDefectData(i, 13); // (13) CODE pDefectResult->strDefectCode.TrimRight(); pDefectResult->strStackType = pResultFileMgr->GetDefectData(i, 14); // (14) STACK_FLAG pDefectResult->strStackType.TrimRight(); pDefectResult->nStackType = GetStackType(pDefectResult->strStackType); // stack type pDefectResult->nStackStepCount = atoi(pResultFileMgr->GetDefectData(i, 15)); // (15) STACK_COUNT pDefectResult->strStackStep = pResultFileMgr->GetDefectData(i, 16); // (16) STACK_STEP pDefectResult->strStackStep.TrimRight(); // (17) IMAGE_FILE // (18) RGB_CODE pDefectResult->strDefectType = pResultFileMgr->GetDefectData(i, 19); // (19) VC_CODE (TB, TW, RB, RW) pDefectResult->strDefectType.TrimRight(); pDefectResult->strDefectZone = pResultFileMgr->GetDefectData(i, 20); // (20) ZONE_CODE pDefectResult->strDefectZone = pDefectResult->strDefectZone.Left(4); pDefectResult->strSizeType = pResultFileMgr->GetDefectData(i, 21); // (21) DEFECT_SIZE pDefectResult->strSizeType.TrimRight(); pDefectResult->nSizeType = GetSizeType(pDefectResult->strSizeType); // size type // filtering subtype pDefectResult->strSubType = pResultFileMgr->GetDefectData(i, 22); // (22) REPEAT_DEFECT (N, MD, CD, MC) pDefectResult->strSubType.TrimRight(); pDefectResult->nSubType = GetSubType(pDefectResult->strSubType); // sub type // (23) DEFECT_TYPE // (24) D_MAX_GR // (25) D_MIN_GR // (26) D_AVG_GR pDefectResult->nAOICameraIdx = atoi(pResultFileMgr->GetDefectData(i, 27)); // (27) CAM_NO pDefectResult->nAOIScanIdx = atoi(pResultFileMgr->GetDefectData(i, 28)); // (28) SCAN_NO // (29) CAM_AVG // (30) R_MAX_GR // (31) R_MIN_GR // (32) R_AVG_GR pDefectResult->nAOIPeak = atoi(pResultFileMgr->GetDefectData(i, 33)); // (33) PEAK // (34) IDSS_CODE // (35) BEFORE_STACK // (36) DEF_NAME // (37) BEFORE_STACK2 if (rand()%2 == 0) { //optic type pDefectResult->strOpticType = _T("TR"); pDefectResult->nOpticType = DEFECT_OPTIC_A3P_EA_TRANSMIT; // gray type pDefectResult->strGrayType = _T("BL"); pDefectResult->nGrayType = DEFECT_GRAY_BLACK; } else { //optic type pDefectResult->strOpticType = _T("RE"); pDefectResult->nOpticType = DEFECT_OPTIC_A3P_EA_REFLECT; // gray type pDefectResult->strGrayType = _T("WH"); pDefectResult->nGrayType = DEFECT_GRAY_WHITE; } pGlassResult->AddDefectResult(pDefectResult); } } int CParsingGlassResult_Simulation::ParsingReviewResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { CString strImageFileName = _T(""); int nWriteCount = 0; int nModuleCount = 4; if (m_pPGR2P) { nModuleCount = m_pPGR2P->PGR2P_GetModuleCount(); } else { nModuleCount =pGlassResult->GetReviewResultCount(); } for (int nCameraIdx=0; nCameraIdxGetReviewResult(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; // 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 (pResultFileMgr && pResult->nDefectIdx != -1) { pResultFileMgr->SetDefectData(pResult->nDefectIdx, 17, strTemp); nWriteCount++; } if(strTemp) { delete[] strTemp; strTemp = NULL; } } } return nWriteCount; } int CParsingGlassResult_Simulation::ParsingWsiResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) { int nWriteCount = 0; CString strImageFileName = _T(""); 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; // wsi 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 (pResultFileMgr && pResult->nDefectIdx != -1) { pResultFileMgr->SetDefectData(pResult->nDefectIdx, 43, strTemp); pResultFileMgr->SetDefectData(pResult->nDefectIdx, 45, pResult->nWsi_Type); pResultFileMgr->SetDefectData(pResult->nDefectIdx, 46, pResult->pWsi_ResultData[Wsi_X_Height]); pResultFileMgr->SetDefectData(pResult->nDefectIdx, 47, pResult->pWsi_ResultData[Wsi_X_Width]); pResultFileMgr->SetDefectData(pResult->nDefectIdx, 48, pResult->pWsi_ResultData[Wsi_X_A_Ratio]); pResultFileMgr->SetDefectData(pResult->nDefectIdx, 49, pResult->nWsi_SlopeWarn); pResultFileMgr->SetDefectData(pResult->nDefectIdx, 50, pResult->pWsi_ResultData[Wsi_X_Area]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 51, pResult->pWsi_ResultData[Wsi_X_LEFT_1_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 52, pResult->pWsi_ResultData[Wsi_X_LEFT_2_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 53, pResult->pWsi_ResultData[Wsi_X_LEFT_3_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 54, pResult->pWsi_ResultData[Wsi_X_LEFT_4_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 55, pResult->pWsi_ResultData[Wsi_X_Right_1_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 56, pResult->pWsi_ResultData[Wsi_X_Right_2_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 57, pResult->pWsi_ResultData[Wsi_X_Right_3_A_Ratio]); // pResultFileMgr->SetDefectData(pResult->nDefectIdx, 58, pResult->pWsi_ResultData[Wsi_X_Right_4_A_Ratio]); nWriteCount++; } if(strTemp) { delete[] strTemp; strTemp = NULL; } } } return nWriteCount; } int CParsingGlassResult_Simulation::ParsingMeasureResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) //Juneki 2016-03-01 { return 0; } int CParsingGlassResult_Simulation::GetDefectType(const CString& strValue) { if (strValue.Compare(_T("TB"))==0) { return DEFECT_TYPE_BD; //3 } else if (strValue.Compare(_T("TW"))==0) { return DEFECT_TYPE_B; //2 } else if (strValue.Compare(_T("RB"))==0) { return DEFECT_TYPE_D; //1 } else if (strValue.Compare(_T("RW"))==0) { return DEFECT_TYPE_PBD; //3 } return 0; } int CParsingGlassResult_Simulation::GetGrayType(const CString& strValue) { if (strValue == "POSI") return DEFECT_GRAY_WHITE; else return DEFECT_GRAY_BLACK; return DEFECT_GRAY_NONE; } int CParsingGlassResult_Simulation::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_Simulation::GetSizeType(const CString& strValue) { if (strValue == "S") DEFECT_SIZE_SMALL; else if (strValue == "M") DEFECT_SIZE_MEDIUM; else if (strValue == "L") DEFECT_SIZE_LARGE; else DEFECT_SIZE_HUGE; return DEFECT_SIZE_NONE; } int CParsingGlassResult_Simulation::GetStackType(const CString& strValue) { if (strValue == "TD") return DEFECT_STACK_TD; else if (strValue == "CD") return DEFECT_STACK_CD; else if (strValue == "SD") return DEFECT_STACK_SD; else return DEFECT_STACK_TD; return DEFECT_STACK_NONE; } int CParsingGlassResult_Simulation::GetJudgeType(const CString& strValue) { if (strValue == "TR") return DEFECT_JUDGE_TR; else if (strValue == "PR") return DEFECT_JUDGE_PR; else if (strValue == "OK") return DEFECT_JUDGE_OK; return DEFECT_JUDGE_NONE; } int CParsingGlassResult_Simulation::GetSubType(const CString& strValue) { if (strValue == "M") return DEFECT_SUBTYPE_MD; else if (strValue == "C") return DEFECT_SUBTYPE_CD; else if (strValue == "MC") return DEFECT_SUBTYPE_MC; else if (strValue == "N") return DEFECT_SUBTYPE_NR; return DEFECT_SUBTYPE_NONE; } int CParsingGlassResult_Simulation::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; } void CParsingGlassResult_Simulation::MemoryParsingFileToGlassResult( CGlassResult* pGlassResult, CDitGlassRawClient* m_pDitRawClient ) { } int CParsingGlassResult_Simulation::MemoryParsingReviewResultDataToFile( CGlassResult* pGlassResult, CDitGlassRawClient* pRawMemoryMgr ) { return 0; } int CParsingGlassResult_Simulation::MemoryParsingWsiResultDataToFile( CGlassResult* pGlassResult, CDitGlassRawClient* pRawMemoryMgr ) { return 0; } int CParsingGlassResult_Simulation::MemoryParsingMeasureResultDataToFile( CGlassResult* pGlassResult, CDitGlassRawClient* pRawMemoryMgr ) { return 0; } int CParsingGlassResult_Simulation::MemoryParsingReflowResultDataToFile( CGlassResult* pGlassResult, CDitGlassRawClient* pRawMemoryMgr ) { return 0; }