Ongoing50 #3428 CF AOI Review Recipe Editor 리뷰 우선순위 조건 타입 변경기능 적용 및 검증
- 우선 순위 조건 Defect Type -> Defecct Code 변경
| | |
| | | |
| | | for(constMapDefectResultIt it=pMapDefectResult->begin();it!=pMapDefectResult->end();it++) |
| | | { |
| | | //pDefectResult는 MapDefectResult<int,CDefectResult>에서 2번째 값 |
| | | //pDefectResult�� MapDefectResult<int,CDefectResult>���� 2��° �� |
| | | pDefectResult = static_cast<CDefectResult*>(it->second); |
| | | if(pDefectResult == NULL || pDefectResult->bReviewAdded==TRUE) continue; |
| | | |
| | | if(pDefectResult->nDefectCode ==2) continue; //고객사 요청사항 190609 chm Crack 안찍기 |
| | | if(pDefectResult->nDefectCode ==2) continue; //����� ��û���� 190609 chm Crack ����� |
| | | |
| | | if(pPriorityInfo->GetPriorityDefectSizeOption()) |
| | | { |
| | |
| | | m_vecDefectResultPtrTemp.clear(); |
| | | } |
| | | |
| | | // 결함 우선순위 정렬결과 출력 |
| | | // ���� �켱���� ���İ�� ��� |
| | | CString strFilename = _T(""); |
| | | //strFilename.Format(_T("C:\\Users\\dit-344\\Desktop\\testfile\\Sorting_Review.csv")); |
| | | strFilename.Format(_T("D:\\Sorting_Review.csv")); |
| | | SaveDefectPoint(m_vecDefectResultPtr, strFilename); |
| | | |
| | | // 결과 만들기 |
| | | // ��� ����� |
| | | return AddReviewDefectResult(); |
| | | } |
| | | |
| | |
| | | |
| | | for(constMapDefectResultIt it=pMapDefectResult->begin();it!=pMapDefectResult->end();it++) |
| | | { |
| | | //pDefectResult는 MapDefectResult<int,CDefectResult>에서 2번째 값 |
| | | //pDefectResult�� MapDefectResult<int,CDefectResult>���� 2��° �� |
| | | pDefectResult = static_cast<CDefectResult*>(it->second); |
| | | if(pDefectResult == NULL) continue; |
| | | |
| | | if(pDefectResult->nDefectCode == 2)continue; //고객사 요청사항 190609 chm Crack 안찍기 |
| | | if(pDefectResult->nDefectCode == 2)continue; //����� ��û���� 190609 chm Crack ����� |
| | | |
| | | //if(pDefectResult->nLocation == DefectLoc_ASG || pDefectResult->nLocation == DefectLoc_PAD || pDefectResult->nLocation == DefectLoc_C2C) continue; |
| | | |
| | |
| | | m_vecDefectResultPtrTemp.clear(); |
| | | } |
| | | |
| | | // 결함 우선순위 정렬결과 출력 |
| | | // ���� �켱���� ���İ�� ��� |
| | | CString strFilename = _T(""); |
| | | // strFilename.Format(_T("D:\\Sorting_Wsi_temp1.csv")); |
| | | // SaveDefectPoint(vecDefectResultPtrTemp1, strFilename); |
| | |
| | | // strFilename.Format(_T("D:\\Sorting_Wsi.csv")); |
| | | // SaveDefectPoint(m_vecDefectResultPtr, strFilename); |
| | | |
| | | // 결과 만들기.. |
| | | // ��� �����.. |
| | | return AddWsiDefectResult(); |
| | | } |
| | | |
| | |
| | | { |
| | | const CRcpUserDefectInfo *pDefectInfo = m_pRsRcpReviewInfo->GetRcpUserDefectInfo(nPointIdx); |
| | | if (pDefectInfo==NULL) continue; |
| | | if (pDefectInfo->m_nInspectionMode != 0) continue; // _T("WSI") 일 경우 continue 20181218 smok |
| | | if (pDefectInfo->m_nInspectionMode != 0) continue; // _T("WSI") �� ��� continue 20181218 smok |
| | | |
| | | sResult.Reset(); |
| | | |
| | |
| | | { |
| | | const CRcpUserDefectInfo *pInfo = m_pRsRcpReviewInfo->GetRcpUserDefectInfo(nPointIdx); |
| | | if (pInfo==NULL) continue; |
| | | if (pInfo->m_nInspectionMode != 1) continue; // _T("REVIEW") 일 경우 continue 20181218 smok |
| | | if (pInfo->m_nInspectionMode != 1) continue; // _T("REVIEW") �� ��� continue 20181218 smok |
| | | |
| | | sResult.Reset(); |
| | | |
| | |
| | | if (pPriorityInfo==NULL || pDefectResult==NULL) return FALSE; |
| | | |
| | | // check Type |
| | | if (pPriorityInfo->GetPriorityOpticData() != RCP_PRIORITY_ORDER_OPTIC_ALL) |
| | | |
| | | //if (pPriorityInfo->GetPriorityOpticData() != RCP_PRIORITY_ORDER_OPTIC_ALL) |
| | | //{ |
| | | // |
| | | // //if (pDefectResult->nDefectCode != pPriorityInfo->GetPriorityOpticData()) return FALSE; |
| | | //} |
| | | //210608 Defect Code �� ä�¼� ���� ��û |
| | | if (pPriorityInfo->GetPriorityDefectCode() != RCP_PRIORITY_DEFECT_CODE_ALL) |
| | | { |
| | | if (pDefectResult->nDefectCode != pPriorityInfo->GetPriorityOpticData()) return FALSE; |
| | | if (pDefectResult->nDefectJudgeCode != pPriorityInfo->GetPriorityDefectCode()) return FALSE; |
| | | } |
| | | |
| | | if (pPriorityInfo->GetPriorityGradeData() != RCP_PRIORITY_Judge_ALL) |
| | |
| | | |
| | | if (pPriorityInfo->GetPriorityModelData() < 0)return FALSE; |
| | | |
| | | //레시피 인덱스 Model0 -> 1 그래서 -1 |
| | | //������ ��� Model0 -> 1 ���� -1 |
| | | if (pDefectResult->nMultiModel != pPriorityInfo->GetPriorityModelData() - 1)return FALSE; |
| | | |
| | | } |
| | |
| | | |
| | | if (pPriorityInfo->GetPriorityModelData() < 0)return FALSE; |
| | | |
| | | //레시피 인덱스 Model0 -> 1 그래서 -1 |
| | | //������ ��� Model0 -> 1 ���� -1 |
| | | if (pDefectResult->nMultiModel != pPriorityInfo->GetPriorityModelData()-1)return FALSE; |
| | | |
| | | } |
| | |
| | | return nTotalPointCount; |
| | | } |
| | | CDefectResult* pDefectResult = NULL; |
| | | const CRcpSortingInfo* pSortingInfo = m_pRsRcpReviewInfo->GetRcpWSISortInfo(); //WSI 가져다 쓰기 |
| | | const CRcpSortingInfo* pSortingInfo = m_pRsRcpReviewInfo->GetRcpWSISortInfo(); //WSI ������ ���� |
| | | if (pSortingInfo == NULL) return FALSE; |
| | | |
| | | int nCount = m_pRsRcpReviewInfo->GetRcpWsiPriorityInfoCount(); |
| | |
| | | |
| | | for (constMapDefectResultIt it = pMapDefectResult->begin(); it != pMapDefectResult->end(); it++) |
| | | { |
| | | //pDefectResult는 MapDefectResult<int,CDefectResult>에서 2번째 값 |
| | | //pDefectResult�� MapDefectResult<int,CDefectResult>���� 2��° �� |
| | | pDefectResult = static_cast<CDefectResult*>(it->second); |
| | | if (pDefectResult == NULL) continue; |
| | | |
| | | if (pDefectResult->nDefectCode == 2)continue; //고객사 요청사항 190609 chm Crack 안찍기 |
| | | if (pDefectResult->nDefectCode == 2)continue; //����� ��û���� 190609 chm Crack ����� |
| | | |
| | | //if (pDefectResult->nLocation == DefectLoc_ASG || pDefectResult->nLocation == DefectLoc_PAD || pDefectResult->nLocation == DefectLoc_C2C) continue; |
| | | |
| | |
| | | m_vecDefectResultPtrTemp.clear(); |
| | | } |
| | | |
| | | // 결함 우선순위 정렬결과 출력 |
| | | // ���� �켱���� ���İ�� ��� |
| | | CString strFilename = _T(""); |
| | | // strFilename.Format(_T("D:\\Sorting_Wsi_temp1.csv")); |
| | | // SaveDefectPoint(vecDefectResultPtrTemp1, strFilename); |
| | |
| | | // strFilename.Format(_T("D:\\Sorting_Wsi.csv")); |
| | | // SaveDefectPoint(m_vecDefectResultPtr, strFilename); |
| | | |
| | | // 결과 만들기.. |
| | | // ��� �����.. |
| | | return AddWsiMultishotDefectResult(); |
| | | } |
| | | |
| | |
| | | |
| | | void CRcpPriorityInfo::Reset() |
| | | { |
| | | m_nPriorityOpticData = RCP_PRIORITY_ORDER_OPTIC_ALL; // 우선순위 optic 데이터 |
| | | m_nPriorityGrayData = RCP_PRIORITY_ORDER_GRAY_ALL; // 우선순위 gray 데이터 |
| | | m_nPriorityStackData = RCP_PRIORITY_ORDER_STACK_ALL; // 우선순위 stack 데이터 |
| | | m_nPriorityOpticData = RCP_PRIORITY_ORDER_OPTIC_ALL; // �켱���� optic ������ |
| | | m_nPriorityGrayData = RCP_PRIORITY_ORDER_GRAY_ALL; // �켱���� gray ������ |
| | | m_nPriorityStackData = RCP_PRIORITY_ORDER_STACK_ALL; // �켱���� stack ������ |
| | | m_nPriorityDefectType = RCP_PRIORITY_ORDER_PARTICLE; |
| | | m_nPriorityModelData = RCP_PRIORITY_MODEL_TYPE_ALL; |
| | | m_nDefectGradeData = RCP_PRIORITY_Judge_ALL; |
| | |
| | | m_bUseSizeOption = FALSE; |
| | | m_nDefectumMinSize = 0; |
| | | m_nDefectumMaxSize = 99999; |
| | | |
| | | m_nPriorityDefectCode = RCP_PRIORITY_DEFECT_CODE_ALL; //20210608 |
| | | } |
| | | |
| | | void CRcpPriorityInfo::SetInfo(const CRcpPriorityInfo& rhs) |
| | |
| | | { |
| | | } |
| | | |
| | | void CRcp_RsReviewManager::SetFlanFile(CMacroFile& macroFile)//0117 공유메모리 플랜 |
| | | void CRcp_RsReviewManager::SetFlanFile(CMacroFile& macroFile)//0117 ������ �÷� |
| | | { |
| | | int nPlanIdx, nSlotIdx, nLightIdx, nAFMRecipeIdx, nUserDefectIdx, nReflowParameterIdx, nLightIdxWsi, nAFMRecipeIdxWsi; |
| | | int nPlanCount, nLightCount, nAFMRecipeCount, nUserDefectCount, nLightCountWsi, nAFMRecipeCountWsi; |
| | |
| | | const CRcpPriorityInfo *pRcpPriorityInfo = m_rsRcpReviewInfo.GetRcpPriorityInfo(nPriorityIdx); |
| | | if (pRcpPriorityInfo==NULL) continue; |
| | | |
| | | strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx); |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData()); |
| | | /* strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx); |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData());*/ |
| | | strItem.Format(_T("RCP_REVIEW_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx); |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectCode()); |
| | | |
| | | |
| | | strItem.Format(_T("RCP_REVIEW_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx); |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectSizeOption()); |
| | |
| | | strItem.Format(_T("RCP_REVIEW_DEFOCUS_VALUE")); |
| | | macroFile.SetItem(strItem, m_rsRcpReviewInfo.GetDefocusValue()); |
| | | |
| | | // wsi 우선순위 |
| | | // wsi �켱���� |
| | | // Priority |
| | | int nWsiPriorityCount = m_rsRcpReviewInfo.GetRcpWsiPriorityInfoCount(); |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_COUNT")); |
| | |
| | | const CRcpPriorityInfo *pRcpPriorityInfo = m_rsRcpReviewInfo.GetRcpWsiPriorityInfo(nPriorityIdx); |
| | | if (pRcpPriorityInfo==NULL) continue; |
| | | |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx); |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData()); |
| | | //strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx); |
| | | //macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData()); |
| | | |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx);//20210608 |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectCode()); |
| | | |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx); |
| | | macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectSizeOption()); |
| | |
| | | if(pRcpPriorityInfo == NULL) continue; |
| | | |
| | | int nData = 0; |
| | | strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx); |
| | | /*strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx); //210608 |
| | | macroFile.GetItem(strItem, nData); |
| | | pRcpPriorityInfo->SetPriorityOpticData(nData); |
| | | pRcpPriorityInfo->SetPriorityOpticData(nData);*/ |
| | | strItem.Format(_T("RCP_REVIEW_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx); //210608 |
| | | macroFile.GetItem(strItem, nData); |
| | | pRcpPriorityInfo->SetPriorityDefectCode(nData); |
| | | |
| | | strItem.Format(_T("RCP_REVIEW_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx); |
| | | macroFile.GetItem(strItem, nData); |
| | |
| | | if(pRcpPriorityInfo == NULL) continue; |
| | | |
| | | int nData = 0; |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx); |
| | | /*strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx); |
| | | macroFile.GetItem(strItem, nData); |
| | | pRcpPriorityInfo->SetPriorityOpticData(nData); |
| | | pRcpPriorityInfo->SetPriorityOpticData(nData);*/ |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx); //210608 |
| | | macroFile.GetItem(strItem, nData); |
| | | pRcpPriorityInfo->SetPriorityDefectCode(nData); |
| | | |
| | | strItem.Format(_T("RCP_WSI_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx); |
| | | macroFile.GetItem(strItem, nData); |
| | |
| | | m_bClusterCore = FALSE; |
| | | |
| | | nDefectWBType = 0; |
| | | nDefectJudgeCode = 0; |
| | | strDefectJudgeCode = _T(""); |
| | | } |
| | |
| | | { |
| | | } |
| | | |
| | | // [2017:5:12]-[WEZASW] : DFS Result File Format 변경 |
| | | // [2017:5:12]-[WEZASW] : DFS Result File Format ���� |
| | | void CParsingGlassResult_CPJT::ParsingFileToGlassResult(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr)//Cmark |
| | | { |
| | | if(pGlassResult==NULL || pResultFileMgr==NULL) |
| | |
| | | |
| | | |
| | | //========================= |
| | | #pragma region 옛날 코드 |
| | | #pragma region ���� �ڵ� |
| | | //cellResult.strCellID = pResultFileMgr->GetRawData(eCSOTRaw_PanelInfoData, nCellIdx, eCSOTRaw_Panel_CellNum); // No.1 Cell Number |
| | | // No.1 Cell Number |
| | | //cellResult.nDefectCount = atoi(pResultFileMgr->GetRawData(eCSOTRaw_PanelInfoData, nCellIdx, eCSOTRaw_Panel_RearCPDefectNum)); // No.2 Defect Count |
| | |
| | | //========================= |
| | | |
| | | |
| | | pGlassResult->AddCellResult(cellResult); // 추가 |
| | | pGlassResult->AddCellResult(cellResult); // �߰� |
| | | |
| | | // 예외처리 : PNL Total 수량과 실제 불량 개수 확인 |
| | | // ����ó�� : PNL Total ������ ���� �ҷ� ���� Ȯ�� |
| | | if (nTotalDefectIdx+cellResult.nDefectCount > nDefectRawDataCount) { continue; } |
| | | |
| | | |
| | |
| | | // pDefectResult->nDefectidx1 = atoi( pResultFileMgr->GetDefectData(nDefIdx,1)); |
| | | // pDefectResult->nDefectidx2 = atoi(pResultFileMgr->GetDefectData(nDefIdx,2)); |
| | | |
| | | //pDefectResult->strDefectCode = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code); // No.1 결함코드1 |
| | | //pDefectResult->strDefectCode = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code); // No.1 �����ڵ�1 |
| | | pDefectResult->strDefectCode.TrimRight(); |
| | | pDefectResult->nDefectCode = GetDefectCodeType( pGlassResult->m_strRecipeID, pDefectResult->strDefectCode ); |
| | | |
| | |
| | | |
| | | |
| | | |
| | | //pDefectResult->strDefectType = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_AOI_DEFECT_TYPE); // No.7 결함 Type // A - N: Normal, C: Common, M: Mask |
| | | //pDefectResult->strDefectType = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_AOI_DEFECT_TYPE); // No.7 ���� Type // A - N: Normal, C: Common, M: Mask |
| | | pDefectResult->nDefectType = GetCSOTDefectType(pDefectResult->strDefectType); |
| | | |
| | | pDefectResult->nAOIArea = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, 20)); // No.5 Defect Size |
| | |
| | | pDefectResult->nSizeType = GetSizeType(pDefectResult->strSizeType); |
| | | |
| | | |
| | | pDefectResult->nAOISizeW = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_WID))*1000; // No.10 Defect’s X axis size (um) |
| | | pDefectResult->nAOISizeH = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_HGT))*1000; // No.11 Defect’s Y axis size (um) |
| | | pDefectResult->nAOISizeW = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_WID))*1000; // No.10 Defect��s X axis size (um) |
| | | pDefectResult->nAOISizeH = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_HGT))*1000; // No.11 Defect��s Y axis size (um) |
| | | pDefectResult->nAOISize = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, 26)); |
| | | |
| | | //pDefectResult->nAOISizeLength = pDefectResult->nAOISizeW; |
| | |
| | | |
| | | |
| | | //======================= |
| | | #pragma region 옛날 코드 |
| | | #pragma region ���� �ڵ� |
| | | /* |
| | | //atoi(pResultFileMgr->GetCellData(idx,nCellIdx)); |
| | | ////pDefectResult->strCellID |
| | | // |
| | | |
| | | pDefectResult->strDefectCode = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code); // No.1 결함코드1 |
| | | pDefectResult->strDefectCode = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code); // No.1 �����ڵ�1 |
| | | pDefectResult->strDefectCode.TrimRight(); |
| | | pDefectResult->nDefectCode = GetDefectCodeType( pGlassResult->m_strRecipeID, pDefectResult->strDefectCode ); |
| | | |
| | | pDefectResult->nUMCenterOriginX = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriX)); // No.3 Glass Center 기준 좌표 X(mm) |
| | | pDefectResult->nUMCenterOriginY = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriY)); // No.4 Glass Center 기준 좌표 Y(mm) |
| | | pDefectResult->nUMCenterOriginX = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriX)); // No.3 Glass Center ���� ��ǥ X(mm) |
| | | pDefectResult->nUMCenterOriginY = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriY)); // No.4 Glass Center ���� ��ǥ Y(mm) |
| | | pDefectResult->nUMOriginX = (pGlassResult->GetGlassSizeX()/2) + pDefectResult->nUMCenterOriginX*1000; |
| | | pDefectResult->nUMOriginY = (pGlassResult->GetGlassSizeY()/2) + pDefectResult->nUMCenterOriginY*1000; |
| | | //pDefectResult->nUMOriginX = pDefectResult->nUMCenterOriginX*1000; |
| | |
| | | pDefectResult->strSizeType = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_DefectSizeType); // No.6 Defect SizeType // S/M/L/O |
| | | pDefectResult->nSizeType = GetSizeType(pDefectResult->strSizeType); |
| | | |
| | | pDefectResult->strDefectType = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_DefectType); // No.7 결함 Type // A - N: Normal, C: Common, M: Mask |
| | | pDefectResult->strDefectType = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_DefectType); // No.7 ���� Type // A - N: Normal, C: Common, M: Mask |
| | | pDefectResult->nDefectType = GetCSOTDefectType(pDefectResult->strDefectType); |
| | | |
| | | pDefectResult->nAOISizeW = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDX))*1000; // No.10 Defect’s X axis size (um) |
| | | pDefectResult->nAOISizeH = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDY))*1000; // No.11 Defect’s Y axis size (um) |
| | | pDefectResult->nAOISizeW = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDX))*1000; // No.10 Defect��s X axis size (um) |
| | | pDefectResult->nAOISizeH = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDY))*1000; // No.11 Defect��s Y axis size (um) |
| | | pDefectResult->nAOISize = int(pDefectResult->nAOISizeW*pDefectResult->nAOISizeH); |
| | | pDefectResult->nAOISizeLength = pDefectResult->nAOISizeW; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // [2017:5:12]-[WEZASW] : DFS Result File Format 변경 cmark |
| | | // [2017:5:12]-[WEZASW] : DFS Result File Format ���� cmark |
| | | int CParsingGlassResult_CPJT::ParsingReviewResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) |
| | | { |
| | | if (pResultFileMgr==NULL || pGlassResult==NULL) |
| | |
| | | #endif |
| | | if (pResult->nDefectIdx != -1) |
| | | { |
| | | // 고정리뷰일때만 |
| | | // ���������϶��� |
| | | / * |
| | | if( pGlassResult->GetUserResultCount() > 0 ) |
| | | { |
| | |
| | | return nWriteCount; |
| | | } |
| | | |
| | | // [2017:1:3]-[WEZASW] : WSI 측정 결과 쓰기 (사양 미정으로 기본 설정) (ING) |
| | | // [2017:1:3]-[WEZASW] : WSI ���� ��� ���� (��� �������� �⺻ ����) (ING) |
| | | int CParsingGlassResult_CPJT::ParsingWsiResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) |
| | | { |
| | | |
| | |
| | | |
| | | if (pResultFileMgr && pResult->nDefectIdx != -1) |
| | | { |
| | | // [2017:5:13]-[WEZASW] : 7개 추가 항목이었으나 고객사 제출시(최종) 삭제(미스)되어 제공되어 고객사 회신으로 추가 항목(13, 25, 26)만 적용 하기로 기술팀(김D) 협의됨. |
| | | // [2017:5:24]-[WEZASW] : AOI DFS(DFT) 항목 추가(Index 변경) |
| | | // [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, 27, pResult->nWsi_ResultCode); // No.25 Measurement Code (Success:1 / fail:0) |
| | | ///pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 28, int(pResult->pWsi_ResultData[Wsi_X_A_Ratio]*1000)); // No.26 Defect X axis Ration (um) |
| | |
| | | // review image file name |
| | | strImageFileName = pResult->strUploadImgFileName; |
| | | |
| | | // [2018/02/13 22:22:06 by jylee] related RTMS 매칭, 복사 처리 |
| | | // [2018/02/13 22:22:06 by jylee] related RTMS ��Ī, ���� ó�� |
| | | if (pResult->nDefectIdx != -1) |
| | | { |
| | | CheckResultFileAndCopy( pGlassResult, pResultFileMgr, pResult, strImageFileName ); |
| | |
| | | int CParsingGlassResult_CPJT::GetCSOTDefectCode(CString strDfectType){ |
| | | |
| | | //COST_CRACK=0,CSOT_PARTICLE,CSOT_MURA,CSOT_PROTRUDE,CSOT_DENT,CSOT_TFE_ABNORMAL,CSOT_BUBBLE,CSOT_SCRATCH |
| | | //Compare 대상이면 0 대상보다크면 1 작으면 -1 |
| | | //Compare ����̸� 0 ���ũ�� 1 ������ -1 |
| | | |
| | | if(strDfectType.Compare(_T("CRACK"))==0) |
| | | { |
| | |
| | | break; |
| | | case Judge_Rework: sStr.Format("RW"); |
| | | break; |
| | | case Judge_Unknown: sStr.Format("OK");//sStr.Format("Unknown"); //Unknown도 일단 OK |
| | | case Judge_Unknown: sStr.Format("OK");//sStr.Format("Unknown"); //Unknown�� �ϴ� OK |
| | | break; |
| | | default: sStr.Format("OK");//sStr.Format("Ets"); |
| | | break; |
| | |
| | | { |
| | | return DOWS; |
| | | } |
| | | else |
| | | { |
| | | return CODE_DEFAULT; |
| | | } |
| | | return 0; |
| | | |
| | | } |
| | | |
| | | |
| | | // [2018/03/14 09:47:51 by jylee] related Deep Learning |
| | | int CParsingGlassResult_CPJT::GetDefectCodeType( const CString& strRecipeID, const CString& strValue ) |
| | |
| | | void CParsingGlassResult_CPJT::MemoryParsingFileToGlassResult( CGlassResult* pGlassResult, CDitGlassRawClient* pDitRawClient ) |
| | | { |
| | | |
| | | //찐코드// |
| | | //���ڵ�// |
| | | if(pGlassResult==NULL || pDitRawClient==NULL) return; |
| | | |
| | | CString strItem = _T(""); |
| | |
| | | cellResult.nDefectCount = pDitRawClient->GetCellData(nCellIdx)->getTotalDefectNum(); |
| | | cellResult.strCellJudge.Format(_T("%d"),pDitRawClient->GetCellData(nCellIdx)->m_nJudgement); |
| | | |
| | | //20201126 CELL 좌표계를 센터좌표로 바꿈으로 내부 좌표계에서 + 글라스 사이즈/2 해야됨 |
| | | //20201126 CELL ��ǥ�踦 ������ǥ�� �ٲ����� ���� ��ǥ�迡�� + �۶� ������/2 �ؾߵ� |
| | | cellResult.nUMOriginX = pDitRawClient->GetCellData(nCellIdx)->m_rectCellLeft + pDitRawClient->GetGlassData()->m_nGlassSizeWidth/2; |
| | | cellResult.nUMOriginY = pDitRawClient->GetCellData(nCellIdx)->m_rectCellTop + pDitRawClient->GetGlassData()->m_nGlassSizeHeight / 2; |
| | | cellResult.nUMOriginWidth = pDitRawClient->GetCellData(nCellIdx)->m_rectCellRight - cellResult.nUMOriginX + pDitRawClient->GetGlassData()->m_nGlassSizeWidth / 2; |
| | |
| | | CString strCellID(pDitRawClient->GetCellData(nCellIdx)->m_strCellName); |
| | | cellResult.strCellID = strCellID; |
| | | |
| | | pGlassResult->AddCellResult(cellResult); // 추가 |
| | | pGlassResult->AddCellResult(cellResult); // �߰� |
| | | |
| | | } |
| | | pGlassResult->m_strGlassID = pDitRawClient->GetGlassData()->m_strGlassID; |
| | |
| | | if(pDefectResult->nDefectWBType == 1 || pDefectResult->nDefectWBType == 3 || pDefectResult->nDefectWBType ==5) pDefectResult->nDefectWBType =2; |
| | | else pDefectResult->nDefectWBType = 1; |
| | | |
| | | //이거슨 컷오프 대상 Review 제외 210205 |
| | | //�̰Ž� �ƿ��� ��� Review ���� 210205 |
| | | if (pSharedDefect->m_bDefectCutoff == 1) |
| | | { |
| | | continue; |
| | |
| | | pDefectResult->nUMOriginX = pSharedDefect->m_nUMOriginX;// |
| | | pDefectResult->nUMOriginY = pSharedDefect->m_nUMOriginY;// |
| | | |
| | | //pDefectResult->nDefectCode = GetCodeType(pDefectResult->strDefectCode); |
| | | //20210608 �ڵ�� �켱���� |
| | | pDefectResult->nDefectJudgeCode = GetCodeType(pSharedDefect->m_strDefectCode); |
| | | pDefectResult->strDefectJudgeCode = pSharedDefect->m_strDefectCode; |
| | | |
| | | |
| | | pDefectResult->nJudgeType = pSharedDefect->m_DefectJudgement; |
| | | pDefectResult->strJudgeType = GetGradeType(pDefectResult->nJudgeType); |
| | |
| | | |
| | | pDefectResult->nLocation = pSharedDefect->m_sDefectLoc; |
| | | |
| | | //멀티 모델별 Review/WSI 필터링을 위한 인자 |
| | | //��Ƽ �� Review/WSI ������ ���� ���� |
| | | pDefectResult->nMultiModel = pSharedDefect->m_nModelIdx; |
| | | |
| | | if (pSharedDefect->m_DefectBDType == 1) |
| | |
| | | |
| | | |
| | | ////20190311CHM |
| | | //if(pSharedDefect->m_StackInfo == 1) //스택 인데 리뷰 안함 |
| | | //if(pSharedDefect->m_StackInfo == 1) //���� �ε� ���� ���� |
| | | //{ |
| | | // pDefectResult->nStackType = 1; //3이 SD |
| | | // pDefectResult->nStackType = 1; //3�� SD |
| | | //} |
| | | //else if(pSharedDefect->m_StackInfo == 2) // 스택인데 리뷰 함 |
| | | //else if(pSharedDefect->m_StackInfo == 2) // �����ε� ���� �� |
| | | //{ |
| | | // pDefectResult->nStackType = 2; |
| | | //} |
| | | //else |
| | | //{ |
| | | // pDefectResult->nStackType = 0; //0이 ALL |
| | | // pDefectResult->nStackType = 0; //0�� ALL |
| | | //} |
| | | |
| | | pDefectResult->nStackType = pSharedDefect->m_StackInfo; |
| | |
| | | //#endif |
| | | // if (pResult->nResultIdx != -1) |
| | | // { |
| | | // // 20170831 smok 항목 추가 DEFECT_ZONE(AA/PAD/CRACK) 31 -> 32 |
| | | // // [2017:5:24]-[WEZASW] : AOI DFS(DFT) 항목 추가(Index 변경) |
| | | // // 20170831 smok �� �߰� DEFECT_ZONE(AA/PAD/CRACK) 31 -> 32 |
| | | // // [2017:5:24]-[WEZASW] : AOI DFS(DFT) �� �߰�(Index ����) |
| | | // pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, nDefectCount + pResult->nResultIdx, 33, strTemp); // No.31 Image File Name |
| | | // |
| | | // pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, nDefectCount + pResult->nResultIdx, 34, "***"); |
| | |
| | | // DlgReview_FIC.cpp : 구현 파일입니다. |
| | | // DlgReview_FIC.cpp : ���� �����Դϴ�. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "ReviewRecipeEditorDlg.h" |
| | | #include "DlgFilterSizeOption.h" |
| | | |
| | | // CDlgReview 대화 상자입니다. |
| | | // CDlgReview ��ȭ �����Դϴ�. |
| | | |
| | | IMPLEMENT_DYNAMIC(CDlgReview, CDialog) |
| | | |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CDlgReview 메시지 처리기입니다. |
| | | // CDlgReview ���� ó�����Դϴ�. |
| | | BOOL CDlgReview::OnInitDialog() |
| | | { |
| | | CDialog::OnInitDialog(); |
| | | |
| | | // TODO: 여기에 추가 초기화 작업을 추가합니다. |
| | | // TODO: ��� �߰� �ʱ�ȭ �۾��� �߰��մϴ�. |
| | | InitFilterGridControl(); |
| | | InitLightInfoGridControl(); |
| | | InitAFMRecipeGridControl(); |
| | |
| | | |
| | | void CDlgReview::OnBnClickedButtonReviewReset() |
| | | { |
| | | // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. |
| | | // TODO: ��� ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | //CDialog::OnOK(); |
| | | // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. |
| | | // TODO: ��� ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | //CDialog::OnOK(); |
| | | UpdateData(FALSE); |
| | | } |
| | |
| | | |
| | | void CDlgReview::OnBnClickedButtonReviewApply() |
| | | { |
| | | // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. |
| | | // TODO: ��� ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | //CDialog::OnCancel(); |
| | | |
| | | SetFilterInfo(m_nType); |
| | |
| | | nDataColumnWidth = (rect.Width() - 35 - nMargin) / (PRIORITY_INFO_GRID_COL_COUNT-1); |
| | | |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Defect Type")); |
| | | strTemp.Format(_T("Defect Code")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridFilterinfo.SetItem(&Item); |
| | | m_ctrlGridFilterinfo.SetColumnWidth(nColIdx++, nDataColumnWidth+30); |
| | |
| | | |
| | | if(strArrayOption.GetSize() > 0) |
| | | { |
| | | strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData()); |
| | | //strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData()); |
| | | strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityDefectCode()); //WSI ������ //20210608 |
| | | m_ctrlGridFilterinfo.SetItemText(nRowIdx, nColIdx++, strItemText); |
| | | } |
| | | } |
| | |
| | | |
| | | if(strArrayOption.GetSize() > 0) |
| | | { |
| | | strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData()); |
| | | //strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData()); |
| | | strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityDefectCode());//20210608 TRDF ������ |
| | | m_ctrlGridFilterinfo.SetItemText(nRowIdx, nColIdx++, strItemText); |
| | | } |
| | | } |
| | |
| | | { |
| | | UpdateData(TRUE); |
| | | |
| | | //리뷰 dlg 가져오기 |
| | | //���� dlg �������� |
| | | CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); |
| | | if(pDlg == NULL) return; |
| | | |
| | | //리뷰 매니져 |
| | | //���� �Ŵ��� |
| | | CRcp_RsReviewManager* pRcpRsReviewManager = NULL; |
| | | pRcpRsReviewManager = pDlg->GetRsReviewManager(); |
| | | if(pRcpRsReviewManager == NULL) return; |
| | |
| | | CString strTemp, strItemText; |
| | | CStringArray strArrayOption; |
| | | |
| | | // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type 분리 |
| | | // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type �и� |
| | | if(nType) |
| | | { |
| | | //WSI |
| | | //조명 |
| | | //���� |
| | | nColIdx = 1; |
| | | pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpWsiLightInfoCount(m_nLightCount); |
| | | pRcpRsReviewManager->GetRsRcpReviewInfo()->m_bAutoLightWsi = m_ctrlAutoLight.GetCheck(); |
| | |
| | | nColIdx++; |
| | | } |
| | | |
| | | //AFM 레시피 |
| | | //AFM ������ |
| | | nRowIdx = 1; |
| | | nColIdx = 1; |
| | | pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpWsiAFMRecipeInfoCount(m_nAFMCount); |
| | |
| | | else |
| | | { |
| | | //Review |
| | | //조명 |
| | | //���� |
| | | nColIdx = 1; |
| | | pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpLightInfoCount(m_nLightCount); |
| | | pRcpRsReviewManager->GetRsRcpReviewInfo()->m_bAutoLight = m_ctrlAutoLight.GetCheck(); |
| | |
| | | nColIdx++; |
| | | } |
| | | |
| | | //AFM 레시피 |
| | | //AFM ������ |
| | | nRowIdx = 1; |
| | | nColIdx = 1; |
| | | pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpAFMRecipeInfoCount(m_nAFMCount); |
| | |
| | | { |
| | | UpdateData(TRUE); |
| | | |
| | | //리뷰 dlg 가져오기 |
| | | //���� dlg �������� |
| | | CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); |
| | | if(pDlg == NULL) return; |
| | | |
| | | //리뷰 매니져 |
| | | //���� �Ŵ��� |
| | | CRcp_RsReviewManager* pRcpRsReviewManager = NULL; |
| | | pRcpRsReviewManager = pDlg->GetRsReviewManager(); |
| | | if(pRcpRsReviewManager == NULL) return; |
| | |
| | | strTemp = strArrayOption.GetAt(j); |
| | | if(strTemp.Compare(strItemText) == 0) |
| | | { |
| | | pRcpPriorityInfo->SetPriorityOpticData(j); |
| | | //pRcpPriorityInfo->SetPriorityOpticData(j);//20210608 |
| | | pRcpPriorityInfo->SetPriorityDefectCode(j); |
| | | break; |
| | | } |
| | | } |
| | |
| | | strTemp = strArrayOption.GetAt(j); |
| | | if(strTemp.Compare(strItemText) == 0) |
| | | { |
| | | pRcpPriorityInfo->SetPriorityOpticData(j); |
| | | //pRcpPriorityInfo->SetPriorityOpticData(j); //20210608 |
| | | pRcpPriorityInfo->SetPriorityDefectCode(j); |
| | | break; |
| | | } |
| | | } |
| | |
| | | const CSystemInfo *pSystemInfo = pDlg->GetSys_SystemInfo(); |
| | | if (pSystemInfo==NULL) return; |
| | | |
| | | int nLightCount = 0; // 헤더 갯수가 조명 설정 갯수임 |
| | | int nLightCount = 0; // ��� ������ ���� ���� ������ |
| | | int nGantryCount = pSystemInfo->GetGantryInfoCount(); |
| | | for(int nGantryIdx=0; nGantryIdx<nGantryCount; nGantryIdx++) |
| | | { |
| | |
| | | Item.mask = GVIF_TEXT; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Index"));//_T("인덱스")); |
| | | strTemp.Format(_T("Index"));//_T("���")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridLightInfo.SetItem(&Item); |
| | | m_ctrlGridLightInfo.SetColumnWidth(nColIdx, 100); |
| | |
| | | nRowIdx++; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Light Level (gLv)"));//_T("광량 값")); |
| | | strTemp.Format(_T("Light Level (gLv)"));//_T("���� ��")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridLightInfo.SetItem(&Item); |
| | | |
| | | nRowIdx++; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Min Level (gLv)"));//_T("최소 광량 값")); |
| | | strTemp.Format(_T("Min Level (gLv)"));//_T("�ּ� ���� ��")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridLightInfo.SetItem(&Item); |
| | | |
| | | nRowIdx++; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Max Level (gLv)"));//_T("최대 광량 값")); |
| | | strTemp.Format(_T("Max Level (gLv)"));//_T("�ִ� ���� ��")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridLightInfo.SetItem(&Item); |
| | | |
| | | nRowIdx++; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Auto Light (gLv)"));//_T("자동 변경 값")); |
| | | strTemp.Format(_T("Auto Light (gLv)"));//_T("�ڵ� ���� ��")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridLightInfo.SetItem(&Item); |
| | | |
| | |
| | | if(pRcpRsReviewManager == NULL) return; |
| | | |
| | | |
| | | // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type 분리 |
| | | // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type �и� |
| | | if(nType) |
| | | { |
| | | m_ctrlAutoLight.SetCheck(pRcpRsReviewManager->GetRsRcpReviewInfo()->GetWsiAutoLight()); |
| | |
| | | if (pHeaderInfo==NULL) continue; |
| | | nAFMCount += pHeaderInfo->GetAFMInfoCount(); |
| | | |
| | | //[2017:6:2]-[WEZASW] : SystemSetting의 배율정보 기준으로 적용(셋팅된 렌즈 배율만 선택) |
| | | //[2017:6:2]-[WEZASW] : SystemSetting�� �������� �������� ����(���õ� ���� ������ ����) |
| | | nLensCount = pHeaderInfo->GetMagnificInfoCount(); |
| | | |
| | | for (int nLensIdx=0; nLensIdx<nLensCount; nLensIdx++) |
| | |
| | | const CMagnificInfo* pMagnificInfo = pHeaderInfo->GetMagnificInfo(nLensIdx); |
| | | if (pMagnificInfo==NULL) continue; |
| | | |
| | | // 2017.12.21 smok. 두 개 이상의 gantry / header 시 AFM 배율 표시 이상. |
| | | // 2017.12.21 smok. �� �� �̻��� gantry / header �� AFM ���� ǥ�� �̻�. |
| | | // strArrayOption[nHeaderIdx].Add(pMagnificInfo->m_strMagnificName); |
| | | strArrayOption[nGantryIdx].Add(pMagnificInfo->m_strMagnificName); |
| | | } |
| | |
| | | Item.mask = GVIF_TEXT; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Index"));//_T("인덱스")); |
| | | strTemp.Format(_T("Index"));//_T("���")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridAFMRecipeInfo.SetItem(&Item); |
| | | m_ctrlGridAFMRecipeInfo.SetColumnWidth(nColIdx, 100); |
| | |
| | | nRowIdx++; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Recipe Index"));//_T("레시피 인덱스")); |
| | | strTemp.Format(_T("Recipe Index"));//_T("������ ���")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridAFMRecipeInfo.SetItem(&Item); |
| | | |
| | | nRowIdx++; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx; |
| | | strTemp.Format(_T("Magnific Index"));//_T("배율 인덱스")); |
| | | strTemp.Format(_T("Magnific Index"));//_T("���� ���")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridAFMRecipeInfo.SetItem(&Item); |
| | | |
| | |
| | | pRcpRsReviewManager = pDlg->GetRsReviewManager(); |
| | | if(pRcpRsReviewManager == NULL) return; |
| | | |
| | | // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type 분리 |
| | | // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type �и� |
| | | if(nType) |
| | | { |
| | | nAFMCount = pRcpRsReviewManager->GetRsRcpReviewInfo()->GetRcpWsiAFMRecipeInfoCount(); |
| | |
| | | |
| | | for (int nResultIdx=0; nResultIdx<m_nFilterCount; nResultIdx++) |
| | | { |
| | | //인덱스 |
| | | //��� |
| | | nColIdx = 0; |
| | | Item.mask = GVIF_TEXT; |
| | | Item.row = nRowIdx; |
| | |
| | | // optic |
| | | nColIdx++; |
| | | strArrayOption.RemoveAll(); |
| | | for(j = 0; j < RCP_PRIORITY_ORDER_COUNT; j++) |
| | | /*for(j = 0; j < RCP_PRIORITY_ORDER_COUNT; j++) |
| | | { |
| | | switch(j) |
| | | { |
| | |
| | | break; |
| | | case RCP_PRIORITY_ORDER_SCR: |
| | | strTemp.Format(_T("SCRATCH")); |
| | | break; |
| | | } |
| | | strArrayOption.Add(strTemp); |
| | | }*/ |
| | | for (j = 0; j < RCP_PRIORITY_DEFECTCODE_COUNT; j++)//20210608 |
| | | { |
| | | switch (j) |
| | | { |
| | | case RCP_PRIORITY_DEFECT_CODE_ALL: |
| | | strTemp.Format(_T("ALL")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_TRDF: |
| | | strTemp.Format(_T("TRDF")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_BATR: |
| | | strTemp.Format(_T("BATR")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_DOBB: |
| | | strTemp.Format(_T("DOBB")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_DOBS: |
| | | strTemp.Format(_T("DOBS")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_DOWW: |
| | | strTemp.Format(_T("DOWW")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_DOWB: |
| | | strTemp.Format(_T("DOWB")); |
| | | break; |
| | | case RCP_PRIORITY_DEFECT_CODE_DOWS: |
| | | strTemp.Format(_T("DOWS")); |
| | | break; |
| | | } |
| | | strArrayOption.Add(strTemp); |
| | |
| | | |
| | | void CDlgReview::SizeOptionSetting(int nIndex) |
| | | { |
| | | //리뷰 dlg 가져오기 |
| | | //���� dlg �������� |
| | | CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); |
| | | if(pDlg == NULL) return; |
| | | |
| | | //리뷰 매니져 |
| | | //���� �Ŵ��� |
| | | CRcp_RsReviewManager* pRcpRsReviewManager = pDlg->GetRsReviewManager(); |
| | | if(pRcpRsReviewManager == NULL) return; |
| | | |
| | |
| | | int Defect_width[DEFECTLISTCNT] = { 50, 80, 80, 50, 50, 40, 40, 45, 45, 50, 50, 80, 80 }; |
| | | |
| | | // [2017:6:7]-[WEZASW] : BOE향 |
| | | #define B7_DEFECTLISTCNT 13 |
| | | TCHAR* B7_Defect_Titlelist[B7_DEFECTLISTCNT] = { _T("No"), _T("RV_X(mm)"), _T("RV_Y(mm)"), _T("DType"), _T("MType"), _T("SType"), _T("DLength"), _T("Area"), _T("Peak"), _T("Cam"), _T("DType1"), _T("AOI_X(mm)"), _T("AOI_Y(mm)")}; |
| | | int B7_Defect_width[B7_DEFECTLISTCNT] = { 40, 75, 75, 75, 75, 50, 60, 45, 45, 40, 60, 80, 80 }; |
| | | #define B7_DEFECTLISTCNT 14 |
| | | TCHAR* B7_Defect_Titlelist[B7_DEFECTLISTCNT] = { _T("No"), _T("RV_X(mm)"), _T("RV_Y(mm)"), _T("DType"), _T("MType"), _T("SType"),_T("DCode"), _T("DLength"), _T("Area"), _T("Peak"), _T("Cam"), _T("DType1"), _T("AOI_X(mm)"), _T("AOI_Y(mm)")}; |
| | | int B7_Defect_width[B7_DEFECTLISTCNT] = { 40, 75, 75, 75, 50, 50, 55, 60, 45, 45, 40, 60, 80, 80 }; |
| | | |
| | | |
| | | |
| | |
| | | |
| | | m_bAsending = !m_bAsending; |
| | | |
| | | if(nCol==3 || nCol==4 || nCol==5 || nCol==10) |
| | | if(nCol==3 || nCol==4 || nCol==5 || nCol==6)//210608 |
| | | { |
| | | vector< pair<CString,CDefectResult*> > vec; |
| | | |
| | |
| | | vec.push_back(make_pair(pDefectResult->strDefectType, pDefectResult)); |
| | | break; |
| | | case 4: |
| | | vec.push_back(make_pair(pDefectResult->strMarkType, pDefectResult)); |
| | | vec.push_back(make_pair(pDefectResult->strJudgeType, pDefectResult)); |
| | | break; |
| | | case 5: |
| | | vec.push_back(make_pair(pDefectResult->strSizeType, pDefectResult)); |
| | | vec.push_back(make_pair(pDefectResult->strSizeType, pDefectResult)); |
| | | break; |
| | | case 10: |
| | | vec.push_back(make_pair(pDefectResult->strDefectType1, pDefectResult)); |
| | | case 6: |
| | | vec.push_back(make_pair(pDefectResult->strDefectJudgeCode, pDefectResult)); |
| | | break; |
| | | /*case 11: |
| | | vec.push_back(make_pair(pDefectResult->strDefectType1, pDefectResult)); |
| | | break;*/ |
| | | default: |
| | | continue; |
| | | } |
| | |
| | | case 0: nValue = pDefectResult->nDefectIdx; break; // _T("No") |
| | | case 1: nValue = pDefectResult->nUMOriginX; break; // _T("RV_X(mm)") |
| | | case 2: nValue = pDefectResult->nUMOriginY; break; // _T("RV_Y(mm)") |
| | | case 6: nValue = pDefectResult->nAOISizeLength; break; // _T("DLength") |
| | | case 7: nValue = pDefectResult->nAOIArea; break; // _T("Area") |
| | | case 8: nValue = pDefectResult->nAOIPeak; break; // _T("Peak") |
| | | case 9: nValue = pDefectResult->nAOICameraIdx; break; // _T("Cam") |
| | | case 10: nValue = pDefectResult->nAOIScanIdx; break; // _T("Cam") |
| | | case 11: nValue = pDefectResult->dUMCenterOriginX; break; // _T("AOI_X(mm)") |
| | | case 12: nValue = pDefectResult->dUMCenterOriginY; break; // _T("AOI_Y(mm)") |
| | | case 7: nValue = pDefectResult->nAOISizeLength; break; // _T("DLength") |
| | | case 8: nValue = pDefectResult->nAOIArea; break; // _T("Area") |
| | | case 9: nValue = pDefectResult->nAOIPeak; break; // _T("Peak") |
| | | case 10: nValue = pDefectResult->nAOICameraIdx; break; // _T("Cam") |
| | | case 11: nValue = pDefectResult->nAOIScanIdx; break; // _T("Cam") |
| | | case 12: nValue = pDefectResult->dUMCenterOriginX; break; // _T("AOI_X(mm)") |
| | | case 13: nValue = pDefectResult->dUMCenterOriginY; break; // _T("AOI_Y(mm)") |
| | | default: continue; |
| | | } |
| | | |
| | |
| | | case 3: strItem = _T("DType"); break; |
| | | case 4: strItem = _T("Judge"); break; |
| | | case 5: strItem = _T("SType"); break; |
| | | case 6: strItem = _T("DLength"); break; |
| | | case 7: strItem = _T("Area"); break; |
| | | case 8: strItem = _T("Peak"); break; |
| | | case 9: strItem = _T("Cam"); break; |
| | | case 10: strItem = _T("ScanN"); break; |
| | | case 11: strItem = _T("AOI_X(mm)"); break; |
| | | case 12: strItem = _T("AOI_Y(mm)"); break; |
| | | case 6: strItem = _T("DCODE"); break; |
| | | case 7: strItem = _T("DLength"); break; |
| | | case 8: strItem = _T("Area"); break; |
| | | case 9: strItem = _T("Peak"); break; |
| | | case 10: strItem = _T("Cam"); break; |
| | | case 11: strItem = _T("ScanN"); break; |
| | | case 12: strItem = _T("AOI_X(mm)"); break; |
| | | case 13: strItem = _T("AOI_Y(mm)"); break; |
| | | default: break; |
| | | } |
| | | } |
| | |
| | | strItem.Format(_T("%s"), pDefectResult->strSizeType); |
| | | } |
| | | break; |
| | | case 6: //S_Type |
| | | { |
| | | strItem.Format(_T("%s"), pDefectResult->strDefectJudgeCode);//210608 |
| | | } |
| | | break; |
| | | |
| | | case 6: //DLength |
| | | case 7: //DLength |
| | | { |
| | | strItem.Format(_T("%d"), (int)pDefectResult->nAOISizeLength); |
| | | } |
| | | break; |
| | | case 7: //Area |
| | | case 8: //Area |
| | | { |
| | | strItem.Format(_T("%d"), (int)pDefectResult->nAOIArea); |
| | | } |
| | | break; |
| | | case 8: //Peak |
| | | case 9: //Peak |
| | | { |
| | | strItem.Format(_T("%d"), pDefectResult->nAOIPeak); |
| | | } |
| | | break; |
| | | case 9: //Cam |
| | | case 10: //Cam |
| | | { |
| | | strItem.Format(_T("%d"), pDefectResult->nAOICameraIdx); |
| | | } |
| | | break; |
| | | case 10: //D_Type1 |
| | | case 11: //D_Type1 |
| | | { |
| | | // strItem.Format(_T("%s"), pDefectResult->strDefectType1); |
| | | strItem.Format(_T("%d"), pDefectResult->nAOIScanIdx); |
| | | } |
| | | break; |
| | | case 11: //AOI_X(mm) |
| | | case 12: //AOI_X(mm) |
| | | { |
| | | strItem.Format(_T("%.03lf"), pDefectResult->dUMCenterOriginX / 1000.); |
| | | } |
| | | break; |
| | | case 12: //AOI_Y(mm) |
| | | case 13: //AOI_Y(mm) |
| | | { |
| | | strItem.Format(_T("%.03lf"), pDefectResult->dUMCenterOriginY / 1000.); |
| | | } |
| | |
| | | using namespace CHReviewResult; |
| | | |
| | | // SDC 향 |
| | | #define DEFECTLISTCNT 13 |
| | | #define DEFECTLISTCNT 14 |
| | | TCHAR* Defect_HistoryTitlelist[DEFECTLISTCNT] = { _T("No"), _T("Mask_X(mm)"), _T("Mask_Y(mm)"), _T("Size"), _T("Peak"), _T("Cam"), _T("Scan"), _T("Type"), _T("Stack"), _T("Zone"), _T("Type"), _T("AOI_X(mm)"), _T("AOI_Y(mm)") }; |
| | | int Defect_Historywidth[DEFECTLISTCNT] = { 50, 80, 80, 50, 50, 40, 40, 45, 45, 50, 50, 80, 80 }; |
| | | |
| | | // [2017:6:7]-[WEZASW] : BOE향 |
| | | #define B7_DEFECTLISTCNT 13 |
| | | #define B7_DEFECTLISTCNT 14 |
| | | TCHAR* B7_Defect_HistoryTitlelist[B7_DEFECTLISTCNT] = { _T("No"), _T("RV_X(mm)"), _T("RV_Y(mm)"), _T("DType"), _T("MType"), _T("SType"), _T("DLength"), _T("Area"), _T("Peak"), _T("Cam"), _T("DType1"), _T("AOI_X(mm)"), _T("AOI_Y(mm)") }; |
| | | int B7_Defect_Historywidth[B7_DEFECTLISTCNT] = { 40, 75, 75, 75, 75, 50, 60, 45, 45, 40, 60, 80, 80 }; |
| | | |
| | |
| | | RCP_PRIORITY_Judge_ALL = 0, RCP_PRIORITY_Judge_OK, RCP_PRIORITY_Judge_RP, RCP_PRIORITY_Judge_NG, RCP_PRIORITY_Judge_TR, RCP_PRIORITY_Judge_PR, RCP_PRIORITY_Judge_PT, RCP_PRIORITY_Judge_Review, RCP_PRIORITY_Judge_RC, RCP_PRIORITY_Judge_Size, RCP_PRIORITY_Judge_VI, RCP_PRIORITY_Judge_Rework, RCP_PRIORITY_Judge_Unknown, RCP_PRIORITY_GRADE_COUNT |
| | | }; |
| | | |
| | | enum RECIPE_PRIORITY_CPJT_DEFECTCODE_TYPE { |
| | | RCP_PRIORITY_DEFECT_CODE_ALL = 0, RCP_PRIORITY_DEFECT_CODE_TRDF, RCP_PRIORITY_DEFECT_CODE_BATR, RCP_PRIORITY_DEFECT_CODE_DOBB, RCP_PRIORITY_DEFECT_CODE_DOBS, RCP_PRIORITY_DEFECT_CODE_DOWW, RCP_PRIORITY_DEFECT_CODE_DOWB, RCP_PRIORITY_DEFECT_CODE_DOWS, RCP_PRIORITY_DEFECTCODE_COUNT |
| | | }; |
| | | |
| | | |
| | | class AFX_EXT_CLASS CRcpPriorityInfo |
| | | { |
| | |
| | | int GetPriorityDefectMaxSize() const { return m_nDefectumMaxSize; } |
| | | BOOL GetPriorityDefectSizeOption() const { return m_bUseSizeOption; } |
| | | int GetPriorityGradeData() const { return m_nDefectGradeData; } |
| | | int GetPriorityDefectCode() const { return m_nPriorityDefectCode; }//20210608 TRDF ������ |
| | | |
| | | // setter |
| | | void SetInfo(const CRcpPriorityInfo& rhs); |
| | |
| | | void SetPriorityDefectMaxSize(int nSize) { m_nDefectumMaxSize = nSize; } |
| | | void SetPriorityDefectSizeOption(bool bUse) { m_bUseSizeOption = bUse; } |
| | | void SetPriorityGradeData(int nData) {m_nDefectGradeData = nData; } |
| | | |
| | | void SetPriorityDefectCode(int nData) {m_nPriorityDefectCode = nData;} //20210608 |
| | | protected: |
| | | int m_nPriorityOpticData; // 우선순위 optic 데이터 |
| | | int m_nPriorityGrayData; // 우선순위 gray 데이터 |
| | | int m_nPriorityStackData; // 우선순위 stack 데이터 |
| | | int m_nPriorityModelData; // 우선순위 Midek 데이터 |
| | | int m_nPriorityOpticData; // �켱���� optic ������ |
| | | int m_nPriorityGrayData; // �켱���� gray ������ |
| | | int m_nPriorityStackData; // �켱���� stack ������ |
| | | int m_nPriorityModelData; // �켱���� Midek ������ |
| | | int m_nPriorityDefectType; |
| | | int m_nPriorityDefectTypeNum; |
| | | int m_nDefectGradeData; |
| | | int m_nPriorityDefectCode; // �켱���� �˻� DefectCode ������//20210608 |
| | | |
| | | BOOL m_bUseSizeOption; |
| | | int m_nDefectumMinSize; |
| | |
| | | namespace CHReviewResult |
| | | { |
| | | enum ResultFileType { RESULT_FILE_TD = 0, RESULT_FILE_CD, RESULT_FILE_SD, RESULT_FILE_TYPE_COUNT }; |
| | | enum DefectType { DEFECT_TYPE_NONE = 0, DEFECT_TYPE_D, DEFECT_TYPE_B, DEFECT_TYPE_BD, DEFECT_TYPE_PD, DEFECT_TYPE_PB, DEFECT_TYPE_PBD, DEFECT_TYPE_MNT, DEFECT_TYPE_EC, DEFECT_TYPE_MURA, DEFECT_TYPE_VLINE, DEFECT_TYPE_HLINE, DEFECT_TYPE_SPOT, DEFECT_TYPE_DENT, DEFECT_TYPE_PROTRUDE };// 20171003 smok. MURA 세부 결과 |
| | | enum DefectType { DEFECT_TYPE_NONE = 0, DEFECT_TYPE_D, DEFECT_TYPE_B, DEFECT_TYPE_BD, DEFECT_TYPE_PD, DEFECT_TYPE_PB, DEFECT_TYPE_PBD, DEFECT_TYPE_MNT, DEFECT_TYPE_EC, DEFECT_TYPE_MURA, DEFECT_TYPE_VLINE, DEFECT_TYPE_HLINE, DEFECT_TYPE_SPOT, DEFECT_TYPE_DENT, DEFECT_TYPE_PROTRUDE };// 20171003 smok. MURA ���� ��� |
| | | // [2018/01/29 15:16:23 by jylee] related PANDA |
| | | enum PANDADefectType { DEFECT_TYPE_NORMAL = 0, DEFECT_TYPE_COMMON, DEFECT_TYPE_MASK }; |
| | | enum DefectGrayType { DEFECT_GRAY_NONE = 0, DEFECT_GRAY_BLACK, DEFECT_GRAY_WHITE }; |
| | |
| | | enum DefectPositionType { DEFECT_POSITION_NONE = -1, DEFECT_POSITION_FRONT, DEFECT_POSITION_BACK }; |
| | | enum DefectZoneType { DEFECT_ZONE_NONE = 0, DEFECT_ZONE_DA, DEFECT_ZONE_GA, DEFECT_ZONE_GH, DEFECT_ZONE_AA }; |
| | | |
| | | enum SERVER_DefectType { DefectType_TBlack = 0, DefectType_TWhite, DefectType_RBlack, DefectType_RWhite, DefectType_Unknown }; //검사기 |
| | | enum SERVER_DefectLocation { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_Align }; //검사기 |
| | | enum SERVER_DefectSubType { DefectSubType_Normal = 0, DefectSubType_Edge, DefectSubType_MC, DefectSubType_Mask, DefectSubType_Common, DefectSubType_NoDefect, DefectSubType_Align }; //검사기 |
| | | enum SERVER_DefectType { DefectType_TBlack = 0, DefectType_TWhite, DefectType_RBlack, DefectType_RWhite, DefectType_Unknown }; //�˻�� |
| | | enum SERVER_DefectLocation { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_Align }; //�˻�� |
| | | enum SERVER_DefectSubType { DefectSubType_Normal = 0, DefectSubType_Edge, DefectSubType_MC, DefectSubType_Mask, DefectSubType_Common, DefectSubType_NoDefect, DefectSubType_Align }; //�˻�� |
| | | |
| | | enum SERVER_DefectPosition { DefectPos_Front = 0, DefectPos_Back }; |
| | | |
| | |
| | | void Reset(); |
| | | |
| | | public: |
| | | //02.14 CHM RTMS용도 |
| | | //02.14 CHM RTMS�뵵 |
| | | CString strLotID; |
| | | CString strGlassID; |
| | | CString strOperID; // |
| | | |
| | | CString ProcessID; // operID 동일 |
| | | CString ProcessID; // operID ���� |
| | | int nPanelID; // test |
| | | int nDefectidx1; //검사 디펙 인덱스 |
| | | int nDefectidx2; //Raw 메신저 인덱스 |
| | | int nDefectidx1; //�˻� ���� �ε��� |
| | | int nDefectidx2; //Raw ���� ��� |
| | | int nUpdateTime; |
| | | |
| | | |
| | |
| | | BOOL bRework; |
| | | BOOL bReworkSelected; |
| | | |
| | | // [2017:5:12]-[WEZASW] : DFS Result File Format 변경 |
| | | // [2017:5:12]-[WEZASW] : DFS Result File Format ���� |
| | | // defect raw data |
| | | int nTotalDefectCount; // Mura Defect Filter용 Total Defect(Vector) Index |
| | | int nTotalDefectCount; // Mura Defect Filter�� Total Defect(Vector) Index |
| | | |
| | | int nDefectIdx; // Defect No. |
| | | CString strDefectCode; // Defect Code |
| | | int nDefectCode; // Defect Code Number |
| | | CString strDefectCode2; |
| | | int nDefectJudgeCode; // TRDF ���� �˻� Defect Code CPJT �� ��...���� DefectJudge�� �ٸ� Defect Code ���ٸ� tlqkf |
| | | CString strDefectJudgeCode; // TRDF ���� �˻� Defect Code CPJT �� //20210608 |
| | | CString strDefectName; // Defect Name |
| | | CString strCPResult; |
| | | |
| | | CString strDefectType; // PARTICLE/CRACK/DENT / PROTRUSION/TFE_ABNORMAL |
| | | int nDefectType; |
| | | |
| | | int nUMOriginX; // LTPS글라스 센터 기준 좌표 X |
| | | int nUMOriginY; // LTPS글라스 센터 기준 좌표 Y |
| | | int nUMOriginX; // LTPS�۶� ���� ���� ��ǥ X |
| | | int nUMOriginY; // LTPS�۶� ���� ���� ��ǥ Y |
| | | |
| | | double nUMTransX; // Stage 상의 글라스 Left Bottom 컷팅면 기준 상대좌표 X |
| | | double nUMTransY; // Stage 상의 글라스 Left Bottom 컷팅면 기준 상대좌표 Y |
| | | double nUMTransX; // Stage ���� �۶� Left Bottom ���ø� ���� �����ǥ X |
| | | double nUMTransY; // Stage ���� �۶� Left Bottom ���ø� ���� �����ǥ Y |
| | | |
| | | int nUMCellX;//셀 중심 x좌표 |
| | | int nUMCellY;//셀 중심 Y좌표 |
| | | int nUMCellX;//�� �߽� x��ǥ |
| | | int nUMCellY;//�� �߽� Y��ǥ |
| | | |
| | | CString strMarkType; // POINT/LINE/RECT/CIRCLE/TRIANGLE/ARC |
| | | int nMarkType; |
| | | |
| | | double dUMCenterOriginX; // Glass Center 기준 좌표 X |
| | | double dUMCenterOriginY; // Glass Center 기준 좌표 X |
| | | double dUMCenterOriginX; // Glass Center ���� ��ǥ X |
| | | double dUMCenterOriginY; // Glass Center ���� ��ǥ X |
| | | |
| | | int nSrcMax;//Gray max |
| | | int nRefMax;//비교대상 Gray max |
| | | int nRefMax;//��� Gray max |
| | | |
| | | CString strCellID; // Defected Panel ID |
| | | CString strEquipID; |
| | |
| | | CString strSizeType; // S/M/L/EX_L/UL_L |
| | | int nSizeType; |
| | | |
| | | double nAOISizeW; // Defect’s X axis size (um) |
| | | double nAOISizeH; // Defect’s Y axis size (um) |
| | | double nAOISizeLength; // Defect’s Diagonal Length (um) |
| | | double nAOISizeW; // Defect��s X axis size (um) |
| | | double nAOISizeH; // Defect��s Y axis size (um) |
| | | double nAOISizeLength; // Defect��s Diagonal Length (um) |
| | | double nAOIArea; // |
| | | CString strAOIArea; |
| | | |
| | | int nAOIPeak; // |
| | | |
| | | int nDefectWBType; // 백결함 흑결함 분류 (1,3,5가 백결함) |
| | | int nDefectWBType; // ����� ����� �з� (1,3,5�� �����) |
| | | |
| | | CString strDefectType1; |
| | | int nDefectType1; |
| | | |
| | | CString strDefectType2; // Back(B) / TOP(T)???? => Lami AOI 상/하 Camera에 대한 분류 목적 |
| | | CString strDefectType2; // Back(B) / TOP(T)???? => Lami AOI ��/�� Camera�� ���� �з� ���� |
| | | int nDefectType2; |
| | | |
| | | CString strUploadImgFileName; // Review Image File Name |
| | | CString strUploadImgFileName2; // image name 2 |
| | | |
| | | int nDefectGroup; // [2018/06/04 11:13:54 by jylee] related Group Defect 분류 |
| | | int nDefectGroup; // [2018/06/04 11:13:54 by jylee] related Group Defect �з� |
| | | |
| | | int nMultiModel; |
| | | |
| | | int nReview_Processing; |
| | | |
| | | // [2017:4:10]-[WEZASW] : 고객사 요청에 의한 bmp 파일 추가 저장. (임시사용) |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | CString strOrignalImgFileName; |
| | | |
| | | // [2017/08/03 14:10:50 by jylee] related Sharp |
| | |
| | | int nSortSection; |
| | | |
| | | // not used FIC |
| | | int nZonePercent; // (13) ZONE_Percent //사용안함. or MNT Data 0 |
| | | int nBF_Width; // (14) bf_width_um //디펙 width (세로) BF Size or MNT Data 1 |
| | | int nBF_Length; // (15) bf_length_um //디펙 Length (가로) BF Size or MNT Data 2 |
| | | int nBF_Min; // (16) bf_min //BF_DEFECT의 GRAY MIN or MNT Data 3 |
| | | int nBF_Avg; // (17) bf_avg //BF_DEFECT의 GRAY AVG or MNT Data 0 |
| | | int nZonePercent; // (13) ZONE_Percent //������. or MNT Data 0 |
| | | int nBF_Width; // (14) bf_width_um //���� width (����) BF Size or MNT Data 1 |
| | | int nBF_Length; // (15) bf_length_um //���� Length (����) BF Size or MNT Data 2 |
| | | int nBF_Min; // (16) bf_min //BF_DEFECT�� GRAY MIN or MNT Data 3 |
| | | int nBF_Avg; // (17) bf_avg //BF_DEFECT�� GRAY AVG or MNT Data 0 |
| | | int nBF_AvgDiff; // (18) bf_avg_diff |
| | | |
| | | int nDF_Width; // (19) df_width_um //디펙 width (세로) DF Size |
| | | int nDF_Length; // (20) df_lengt_um //디펙 Length (가로) DF Size |
| | | int nDF_Width; // (19) df_width_um //���� width (����) DF Size |
| | | int nDF_Length; // (20) df_lengt_um //���� Length (����) DF Size |
| | | |
| | | int nBefore_SizeWidth; |
| | | int nBefore_SizeHeight; |
| | |
| | | enum GlassOriginDir { GlassOrigin_LeftTop=0, GlassOrigin_RightTop, GlassOrigin_LeftBottom, GlassOrigin_RightBottom, GlassOrigin_Count }; |
| | | enum CSOTDfectCode {CSOT_PARTICLE=1,COST_CRACK,CSOT_MURA,CSOT_PROTRUDE,CSOT_DENT,CSOT_TFE_ABNORMAL,CSOT_BUBBLE,CSOT_SCRATCH}; |
| | | enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_Unknown }; |
| | | enum JudgeCode { TRDF = 0, BATR, DOBB, DOBS, DOWW, DOWB, DOWS }; |
| | | enum JudgeCode { CODE_DEFAULT= 0,TRDF , BATR, DOBB, DOBS, DOWW, DOWB, DOWS }; |
| | | |
| | | #define LAYER_GT_50 _T("0114") |
| | | #define LAYER_GT_58 _T("0214") |
| | |
| | | |
| | | // |
| | | //enum eCSOTRawGlassIndex{ // 30 |
| | | // eCSOTRaw_Glass_Name = 0, // 계층번호 // AA - 30 고정 |
| | | // eCSOTRaw_Glass_PanelNum, // 검사 Panel 수량 // 9999 - 매 |
| | | // eCSOTRaw_Glass_Name = 0, // ������ȣ // AA - 30 ���� |
| | | // eCSOTRaw_Glass_PanelNum, // �˻� Panel ���� // 9999 - �� |
| | | // eCSOTRaw_Glass_RecipeID, // Recipe ID // AAAA |
| | | // eCSOTRaw_Glass_ProcessTime, // Processing Time // 9999 - 초 : 반입시작 ~ 반출완료 시간 |
| | | // eCSOTRaw_Glass_GlassID, // 기판ID (VCR) // AAAAAAAAAAAA |
| | | // eCSOTRaw_Glass_ProcessTime, // Processing Time // 9999 - �� : ���Խ��� ~ ����Ϸ� �ð� |
| | | // eCSOTRaw_Glass_GlassID, // ����ID (VCR) // AAAAAAAAAAAA |
| | | // |
| | | // eCSOTRaw_Glass_ReadResult, // VCR 읽기 결과 // A |
| | | // eCSOTRaw_Glass_ReadResult, // VCR �б� ��� // A |
| | | // eCSOTRaw_Glass_CPFlag, // CP Instruction Flag // A - 0 : QMS Don't CP Processing, 1 : QMS IN the CP Processing |
| | | // eCSOTRaw_Glass_ElectroNum, // 정전기 Monitor 측정 수량 // 9 - 회 |
| | | // eCSOTRaw_Glass_CCDNum, // CCD Monitor 수량 // 99 - 회 |
| | | // eCSOTRaw_Glass_ReviewNum, // Review 수량 // 999 - 회 |
| | | // eCSOTRaw_Glass_ElectroNum, // ������ Monitor ���� ���� // 9 - ȸ |
| | | // eCSOTRaw_Glass_CCDNum, // CCD Monitor ���� // 99 - ȸ |
| | | // eCSOTRaw_Glass_ReviewNum, // Review ���� // 999 - ȸ |
| | | // |
| | | // eCSOTRaw_Glass_Alignment, // Alignment 유무 // 9 - 실시 : 1, 미실시 : 0 |
| | | // // [2018/07/05 08:38:46 by jylee] related Format 변경 |
| | | // eCSOTRaw_Glass_Spare1, // 스페어 1 |
| | | // eCSOTRaw_Glass_Spare2 // 스페어 2 |
| | | // eCSOTRaw_Glass_Alignment, // Alignment ���� // 9 - �ǽ� : 1, �̽ǽ� : 0 |
| | | // // [2018/07/05 08:38:46 by jylee] related Format ���� |
| | | // eCSOTRaw_Glass_Spare1, // ����� 1 |
| | | // eCSOTRaw_Glass_Spare2 // ����� 2 |
| | | // |
| | | // |
| | | //}; |
| | | /* |
| | | enum eCSOTRawGlassIndex{ // 30 |
| | | eCSOTRaw_Glass_Name = 0, // 1. 계층번호 // AA - 30 고정 |
| | | eCSOTRaw_Glass_PanelNum, // 2. 검사 Panel 수량 // 9999 - 매 |
| | | eCSOTRaw_Glass_Name = 0, // 1. ������ȣ // AA - 30 ���� |
| | | eCSOTRaw_Glass_PanelNum, // 2. �˻� Panel ���� // 9999 - �� |
| | | eCSOTRaw_Glass_RecipeID, // 3. Recipe ID // AAAA |
| | | eCSOTRaw_Glass_ProcessTime, // 4. Processing Time // 9999 - 초 : 반입시작 ~ 반출완료 시간 |
| | | eCSOTRaw_Glass_GlassID, // 5. 기판ID (VCR) // AAAAAAAAAAAA |
| | | eCSOTRaw_Glass_ProcessTime, // 4. Processing Time // 9999 - �� : ���Խ��� ~ ����Ϸ� �ð� |
| | | eCSOTRaw_Glass_GlassID, // 5. ����ID (VCR) // AAAAAAAAAAAA |
| | | |
| | | eCSOTRaw_Glass_ReadResult, // 6. VCR 읽기 결과 // A |
| | | eCSOTRaw_Glass_ReadResult, // 6. VCR �б� ��� // A |
| | | eCSOTRaw_Glass_CPFlag, // 7. CP Instruction Flag // A - 0 : QMS Don't CP Processing, 1 : QMS IN the CP Processing |
| | | eCSOTRaw_Glass_ElectroNum, // 8. 정전기 Monitor 측정 수량 // 9 - 회 |
| | | eCSOTRaw_Glass_CCDNum, // 9. CCD Monitor 수량 // 99 - 회 |
| | | eCSOTRaw_Glass_ReviewNum, // 10. Review 수량 // 999 - 회 |
| | | eCSOTRaw_Glass_ElectroNum, // 8. ������ Monitor ���� ���� // 9 - ȸ |
| | | eCSOTRaw_Glass_CCDNum, // 9. CCD Monitor ���� // 99 - ȸ |
| | | eCSOTRaw_Glass_ReviewNum, // 10. Review ���� // 999 - ȸ |
| | | |
| | | eCSOTRaw_Glass_Alignment, // 11. Alignment 유무 // 9 - 실시 : 1, 미실시 : 0 |
| | | eCSOTRaw_Glass_TotalDefect, // 12. 결함총수 // 99999 |
| | | eCSOTRaw_Glass_REVDefect, // 13. 리뷰 결함수 // 99999 |
| | | eCSOTRaw_Glass_FIXDefect, // 14. 고정 리뷰 결함수 // 99999 |
| | | eCSOTRaw_Glass_MaskDefect, // 15. MASK 결함수 // 99999 |
| | | eCSOTRaw_Glass_Alignment, // 11. Alignment ���� // 9 - �ǽ� : 1, �̽ǽ� : 0 |
| | | eCSOTRaw_Glass_TotalDefect, // 12. �����Ѽ� // 99999 |
| | | eCSOTRaw_Glass_REVDefect, // 13. ���� ���Լ� // 99999 |
| | | eCSOTRaw_Glass_FIXDefect, // 14. ���� ���� ���Լ� // 99999 |
| | | eCSOTRaw_Glass_MaskDefect, // 15. MASK ���Լ� // 99999 |
| | | |
| | | eCSOTRaw_Glass_CommonDefect, // 16. 공통 결함수 // 99999 |
| | | eCSOTRaw_Glass_Spare1, // 17. 스페어 1 |
| | | eCSOTRaw_Glass_Spare2 // 18. 스페어 2 |
| | | eCSOTRaw_Glass_CommonDefect, // 16. ���� ���Լ� // 99999 |
| | | eCSOTRaw_Glass_Spare1, // 17. ����� 1 |
| | | eCSOTRaw_Glass_Spare2 // 18. ����� 2 |
| | | |
| | | }; |
| | | */ |
| | | //enum eCSOTRawPanelIndex{ // 41 |
| | | // eCSOTRaw_Panel_Name = 0, // 1. 계층번호 // AA - 41 고정 |
| | | // eCSOTRaw_Panel_CellNum, // 2. Cell 번호 // AAAA |
| | | // eCSOTRaw_Panel_Judge, // 3. Panel 판정 결과 // A |
| | | // eCSOTRaw_Panel_Reason, // 4. 판정이유 // AAAAA |
| | | // eCSOTRaw_Panel_CPFlag, // 5. CP Flag // AAA - 0 : 요구 무, 1: 실시, 8: 미실시, 9:Data무 |
| | | // eCSOTRaw_Panel_Name = 0, // 1. ������ȣ // AA - 41 ���� |
| | | // eCSOTRaw_Panel_CellNum, // 2. Cell ��ȣ // AAAA |
| | | // eCSOTRaw_Panel_Judge, // 3. Panel ���� ��� // A |
| | | // eCSOTRaw_Panel_Reason, // 4. �������� // AAAAA |
| | | // eCSOTRaw_Panel_CPFlag, // 5. CP Flag // AAA - 0 : �䱸 ��, 1: �ǽ�, 8: �̽ǽ�, 9:Data�� |
| | | // |
| | | // eCSOTRaw_Panel_FrontCPDefectNum, // 6. CP 전 총결함수 // 9999 - 개 |
| | | // eCSOTRaw_Panel_RearCPDefectNum, // 7. CP 후 총결함수 // 9999 - 개 |
| | | // eCSOTRaw_Panel_Spare1, // 8. 스페어 1 |
| | | // eCSOTRaw_Panel_Spare2 // 9. 스페어 2 |
| | | // eCSOTRaw_Panel_FrontCPDefectNum, // 6. CP �� �Ѱ��Լ� // 9999 - �� |
| | | // eCSOTRaw_Panel_RearCPDefectNum, // 7. CP �� �Ѱ��Լ� // 9999 - �� |
| | | // eCSOTRaw_Panel_Spare1, // 8. ����� 1 |
| | | // eCSOTRaw_Panel_Spare2 // 9. ����� 2 |
| | | //}; |
| | | |
| | | |
| | | //enum eCSOTRawDefectIndex{ // 50 |
| | | // eCSOTRaw_Defect_Name = 0, // 계층번호 // 50 고정 |
| | | // eCSOTRaw_Defect_Code, // 결함코드 // AAAAA |
| | | // eCSOTRaw_Defect_CenterOriX, // 결함좌표X 1 // +-9999.999 mm 기판 센터 기점으로 좌표 |
| | | // eCSOTRaw_Defect_CenterOriY, // 결함좌표Y 1 // +-9999.999 mm |
| | | // eCSOTRaw_Defect_Area, // 결함 Size(면적) // 999.99 um - 추출 결함면적 |
| | | // eCSOTRaw_Defect_Name = 0, // ������ȣ // 50 ���� |
| | | // eCSOTRaw_Defect_Code, // �����ڵ� // AAAAA |
| | | // eCSOTRaw_Defect_CenterOriX, // ������ǥX 1 // +-9999.999 mm ���� ���� �������� ��ǥ |
| | | // eCSOTRaw_Defect_CenterOriY, // ������ǥY 1 // +-9999.999 mm |
| | | // eCSOTRaw_Defect_Area, // ���� Size(����) // 999.99 um - ���� ���Ը��� |
| | | // |
| | | // eCSOTRaw_Defect_SizeType, // 결함 Size 종류 // A - S/M/L/O |
| | | // eCSOTRaw_Defect_DefectType, // 결함 Type // A - N: Normal, C: Common, M: Mask |
| | | // eCSOTRaw_Defect_Zone, // 결함 위치 // A - Zone |
| | | // eCSOTRaw_Defect_Size, // 결함 Size (CCD수) // 99999 um2 - Camera Pixel Size |
| | | // eCSOTRaw_Defect_SizeX, // 결함Size DX // 999.99 um - 추출 결함 X축 길이 |
| | | // eCSOTRaw_Defect_SizeType, // ���� Size ���� // A - S/M/L/O |
| | | // eCSOTRaw_Defect_DefectType, // ���� Type // A - N: Normal, C: Common, M: Mask |
| | | // eCSOTRaw_Defect_Zone, // ���� ��ġ // A - Zone |
| | | // eCSOTRaw_Defect_Size, // ���� Size (CCD��) // 99999 um2 - Camera Pixel Size |
| | | // eCSOTRaw_Defect_SizeX, // ����Size DX // 999.99 um - ���� ���� X�� ���� |
| | | // |
| | | // eCSOTRaw_Defect_SizeY, // 결함Size DY // 999.99 um - 추출 결함 Y축 길이 |
| | | // eCSOTRaw_Defect_X, // 결함좌표 X 2 // 9999.999 mm - QMS Calculation |
| | | // eCSOTRaw_Defect_Y, // 결함좌표 Y 2 // 9999.999 mm |
| | | // eCSOTRaw_Defect_PixelX, // 결함 Pixel 좌표 X // 99999 |
| | | // eCSOTRaw_Defect_PixelY, // 결함 Pixel 좌표 Y // 99999 |
| | | // eCSOTRaw_Defect_SizeY, // ����Size DY // 999.99 um - ���� ���� Y�� ���� |
| | | // eCSOTRaw_Defect_X, // ������ǥ X 2 // 9999.999 mm - QMS Calculation |
| | | // eCSOTRaw_Defect_Y, // ������ǥ Y 2 // 9999.999 mm |
| | | // eCSOTRaw_Defect_PixelX, // ���� Pixel ��ǥ X // 99999 |
| | | // eCSOTRaw_Defect_PixelY, // ���� Pixel ��ǥ Y // 99999 |
| | | // |
| | | // eCSOTRaw_Defect_CPResult, // CP 결과 // AAA - 0: CP 일치 무, 1: CP일치, 8: 미실시 |
| | | // eCSOTRaw_Defect_Flag, // 수정대상 Flag // AAAAA - 0 : 수정대상 외, 1: 수정후보 |
| | | // eCSOTRaw_Defect_ImageName, // 이미지 번호 // AAAAA.A999.AAA - Rule : " 설비ID " + " . " + " B " ( Before ) + " 連番 " + ?張子 " .AAA " |
| | | // eCSOTRaw_Defect_ImageSizeX, // 이미지 Size X // 9999.99 um |
| | | // eCSOTRaw_Defect_ImageSizeY, // 이미지 Size Y // 9999.99 um |
| | | // eCSOTRaw_Defect_CPResult, // CP ��� // AAA - 0: CP ��ġ ��, 1: CP��ġ, 8: �̽ǽ� |
| | | // eCSOTRaw_Defect_Flag, // ������� Flag // AAAAA - 0 : ������� ��, 1: �����ĺ� |
| | | // eCSOTRaw_Defect_ImageName, // �̹��� ��ȣ // AAAAA.A999.AAA - Rule : " ����ID " + " . " + " B " ( Before ) + " ֧�� " + ?��� " .AAA " |
| | | // eCSOTRaw_Defect_ImageSizeX, // �̹��� Size X // 9999.99 um |
| | | // eCSOTRaw_Defect_ImageSizeY, // �̹��� Size Y // 9999.99 um |
| | | // |
| | | // // [2018/07/05 08:42:57 by jylee] related Format 변경 |
| | | // eCSOTRaw_Defect_Spare1 // 스페어 1 |
| | | // // [2018/07/05 08:42:57 by jylee] related Format ���� |
| | | // eCSOTRaw_Defect_Spare1 // ����� 1 |
| | | //}; |
| | | |
| | | /* |
| | | enum eCSOTRawDefectIndex{ // 50 |
| | | eCSOTRaw_Defect_Name = 0, // 1. 계층번호 // 50 고정 |
| | | eCSOTRaw_Defect_Code, // 2. 결함코드 // AAAAA |
| | | eCSOTRaw_Defect_CenterOriX, // 3. 결함좌표X 1 // +-9999.999 mm 기판 센터 기점으로 좌표 |
| | | eCSOTRaw_Defect_CenterOriY, // 4. 결함좌표Y 1 // +-9999.999 mm |
| | | eCSOTRaw_Defect_Area, // 5. 결함 Size(면적) // 999.99 um - 추출 결함면적 |
| | | eCSOTRaw_Defect_Name = 0, // 1. ������ȣ // 50 ���� |
| | | eCSOTRaw_Defect_Code, // 2. �����ڵ� // AAAAA |
| | | eCSOTRaw_Defect_CenterOriX, // 3. ������ǥX 1 // +-9999.999 mm ���� ���� �������� ��ǥ |
| | | eCSOTRaw_Defect_CenterOriY, // 4. ������ǥY 1 // +-9999.999 mm |
| | | eCSOTRaw_Defect_Area, // 5. ���� Size(����) // 999.99 um - ���� ���Ը��� |
| | | |
| | | eCSOTRaw_Defect_SizeType, // 6. 결함 Size 종류 // A - S/M/L/O |
| | | eCSOTRaw_Defect_DefectType, // 7. 결함 Type // A - N: Normal, C: Common, M: Mask |
| | | eCSOTRaw_Defect_Zone, // 8. 결함 위치 // A - Zone |
| | | eCSOTRaw_Defect_Size, // 9. 결함 Size (CCD수) // 99999 um2 - Camera Pixel Size |
| | | eCSOTRaw_Defect_SizeX, // 10. 결함Size DX // 999.99 um - 추출 결함 X축 길이 |
| | | eCSOTRaw_Defect_SizeType, // 6. ���� Size ���� // A - S/M/L/O |
| | | eCSOTRaw_Defect_DefectType, // 7. ���� Type // A - N: Normal, C: Common, M: Mask |
| | | eCSOTRaw_Defect_Zone, // 8. ���� ��ġ // A - Zone |
| | | eCSOTRaw_Defect_Size, // 9. ���� Size (CCD��) // 99999 um2 - Camera Pixel Size |
| | | eCSOTRaw_Defect_SizeX, // 10. ����Size DX // 999.99 um - ���� ���� X�� ���� |
| | | |
| | | eCSOTRaw_Defect_SizeY, // 11. 결함Size DY // 999.99 um - 추출 결함 Y축 길이 |
| | | eCSOTRaw_Defect_X, // 12. 결함좌표 X 2 // 9999.999 mm - QMS Calculation |
| | | eCSOTRaw_Defect_Y, // 13. 결함좌표 Y 2 // 9999.999 mm |
| | | eCSOTRaw_Defect_PixelX, // 14. 결함 Pixel 좌표 X // 99999 |
| | | eCSOTRaw_Defect_PixelY, // 15. 결함 Pixel 좌표 Y // 99999 |
| | | eCSOTRaw_Defect_SizeY, // 11. ����Size DY // 999.99 um - ���� ���� Y�� ���� |
| | | eCSOTRaw_Defect_X, // 12. ������ǥ X 2 // 9999.999 mm - QMS Calculation |
| | | eCSOTRaw_Defect_Y, // 13. ������ǥ Y 2 // 9999.999 mm |
| | | eCSOTRaw_Defect_PixelX, // 14. ���� Pixel ��ǥ X // 99999 |
| | | eCSOTRaw_Defect_PixelY, // 15. ���� Pixel ��ǥ Y // 99999 |
| | | |
| | | eCSOTRaw_Defect_CPResult, // 16. CP 결과 // AAA - 0: CP 일치 무, 1: CP일치, 8: 미실시 |
| | | eCSOTRaw_Defect_Flag, // 17. 수정대상 Flag // AAAAA - 0 : 수정대상 외, 1: 수정후보 |
| | | eCSOTRaw_Defect_ImageName, // 18. 이미지 번호 // AAAAA.A999.AAA - Rule : " 설비ID " + " . " + " B " ( Before ) + " 連番 " + ?張子 " .AAA " |
| | | eCSOTRaw_Defect_ImageSizeX, // 19. 이미지 Size X // 9999.99 um |
| | | eCSOTRaw_Defect_ImageSizeY, // 20. 이미지 Size Y // 9999.99 um |
| | | eCSOTRaw_Defect_CPResult, // 16. CP ��� // AAA - 0: CP ��ġ ��, 1: CP��ġ, 8: �̽ǽ� |
| | | eCSOTRaw_Defect_Flag, // 17. ������� Flag // AAAAA - 0 : ������� ��, 1: �����ĺ� |
| | | eCSOTRaw_Defect_ImageName, // 18. �̹��� ��ȣ // AAAAA.A999.AAA - Rule : " ����ID " + " . " + " B " ( Before ) + " ֧�� " + ?��� " .AAA " |
| | | eCSOTRaw_Defect_ImageSizeX, // 19. �̹��� Size X // 9999.99 um |
| | | eCSOTRaw_Defect_ImageSizeY, // 20. �̹��� Size Y // 9999.99 um |
| | | |
| | | // [2018/07/05 08:42:57 by jylee] related Format 변경 |
| | | eCSOTRaw_Defect_CCDValue, // 21. CCD 수치 // 99999 |
| | | eCSOTRaw_Defect_CCDNum, // 22. 결함검출 카메라 번호 // 99 |
| | | eCSOTRaw_Defect_SliceNum, // 23. 결함 몇번째 스캔 검출// 99 |
| | | eCSOTRaw_Defect_REVNum, // 24. 결함 리뷰한 카메라 // 99 |
| | | eCSOTRaw_Defect_DefectPosGray, // 25. 결함위치 휘도차 // 999 |
| | | // [2018/07/05 08:42:57 by jylee] related Format ���� |
| | | eCSOTRaw_Defect_CCDValue, // 21. CCD ��ġ // 99999 |
| | | eCSOTRaw_Defect_CCDNum, // 22. ������ ī�� ��ȣ // 99 |
| | | eCSOTRaw_Defect_SliceNum, // 23. ���� ���° ��ĵ ����// 99 |
| | | eCSOTRaw_Defect_REVNum, // 24. ���� ������ � // 99 |
| | | eCSOTRaw_Defect_DefectPosGray, // 25. ������ġ �ֵ��� // 999 |
| | | |
| | | eCSOTRaw_Defect_NormalPosGray, // 26. 정상위치 휘도차 // 999 |
| | | eCSOTRaw_Defect_Spare1, // 27. 스페어 1 |
| | | eCSOTRaw_Defect_Spare2 // 28. 스페어 2 |
| | | eCSOTRaw_Defect_NormalPosGray, // 26. ������ġ �ֵ��� // 999 |
| | | eCSOTRaw_Defect_Spare1, // 27. ����� 1 |
| | | eCSOTRaw_Defect_Spare2 // 28. ����� 2 |
| | | }; |
| | | */ |
| | | |
| | | //enum eCSOTRawElectroIndex{ // 51 |
| | | // eCSOTRaw_Electro_Name = 0, // 계층번호 // 51 고정 |
| | | // eCSOTRaw_Electro_Value, // 측정치 // +-9999.99 |
| | | // eCSOTRaw_Electro_Spare1 // 스페어1 |
| | | // eCSOTRaw_Electro_Name = 0, // ������ȣ // 51 ���� |
| | | // eCSOTRaw_Electro_Value, // ����ġ // +-9999.99 |
| | | // eCSOTRaw_Electro_Spare1 // �����1 |
| | | //}; |
| | | |
| | | //enum eCSOTRawCCDIndex{ // 52 |
| | | // eCSOTRaw_CCD_Name = 0, // 계층번호 // 52 고정 |
| | | // eCSOTRaw_CCD_CamNum, // CCD Camera 번호 // AA |
| | | // eCSOTRaw_CCD_AvgGrayScale, // 평균 Gray-Scale // 999 |
| | | // eCSOTRaw_CCD_Spare1 // 스페어1 |
| | | // eCSOTRaw_CCD_Name = 0, // ������ȣ // 52 ���� |
| | | // eCSOTRaw_CCD_CamNum, // CCD Camera ��ȣ // AA |
| | | // eCSOTRaw_CCD_AvgGrayScale, // ��� Gray-Scale // 999 |
| | | // eCSOTRaw_CCD_Spare1 // �����1 |
| | | //}; |
| | | |
| | | enum eCSOTRawReviewIndex{ // 53 |
| | | eCSOTRaw_Review_Name = 0, // 계층번호 // 53 고정 |
| | | eCSOTRaw_Review_PosX, // 결함위치 X // +-9999.999 mm - 기판 중심 |
| | | eCSOTRaw_Review_PosY, // 결함위치 Y // +-9999.999 mm |
| | | eCSOTRaw_Review_ImageName, // 이미지명 // AAAAA.A999.AAA |
| | | eCSOTRaw_Review_SizeX, // 이미지 Size X // 9999.99 um |
| | | eCSOTRaw_Review_SizeY, // 이미지 Size Y // 9999.99 um |
| | | eCSOTRaw_Review_Spare1 // 스페어1 |
| | | eCSOTRaw_Review_Name = 0, // ������ȣ // 53 ���� |
| | | eCSOTRaw_Review_PosX, // ������ġ X // +-9999.999 mm - ���� �߽� |
| | | eCSOTRaw_Review_PosY, // ������ġ Y // +-9999.999 mm |
| | | eCSOTRaw_Review_ImageName, // �̹����� // AAAAA.A999.AAA |
| | | eCSOTRaw_Review_SizeX, // �̹��� Size X // 9999.99 um |
| | | eCSOTRaw_Review_SizeY, // �̹��� Size Y // 9999.99 um |
| | | eCSOTRaw_Review_Spare1 // �����1 |
| | | }; |
| | | |
| | | //enum eCSOTRawAlignmentIndex{ // 55 |
| | | // eCSOTRaw_Alignment_Name = 0, // 계층번호 // 55 고정 |
| | | // eCSOTRaw_Alignment_Result, // Alignment 결과 // 99999 - G: OK, N: NG, S:미판정 |
| | | // eCSOTRaw_Alignment_Rotation, // Alignment Rotation // +-9.999999 - 기판 회전 각도 |
| | | // eCSOTRaw_Alignment_A1ShiftX, // A1 Shift수치 X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A1ShiftY, // A1 Shift수치 Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_Name = 0, // ������ȣ // 55 ���� |
| | | // eCSOTRaw_Alignment_Result, // Alignment ��� // 99999 - G: OK, N: NG, S:������ |
| | | // eCSOTRaw_Alignment_Rotation, // Alignment Rotation // +-9.999999 - ���� ȸ�� ���� |
| | | // eCSOTRaw_Alignment_A1ShiftX, // A1 Shift��ġ X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A1ShiftY, // A1 Shift��ġ Y // +-9.999999 |
| | | // |
| | | // eCSOTRaw_Alignment_A2ShiftX, // A2 Shift수치 X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A2ShiftY, // A2 Shift수치 Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_A3ShiftX, // A3 Shift수치 X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A3ShiftY, // A3 Shift수치 Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_A4ShiftX, // A4 Shift수치 X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A2ShiftX, // A2 Shift��ġ X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A2ShiftY, // A2 Shift��ġ Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_A3ShiftX, // A3 Shift��ġ X // +-9.999999 |
| | | // eCSOTRaw_Alignment_A3ShiftY, // A3 Shift��ġ Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_A4ShiftX, // A4 Shift��ġ X // +-9.999999 |
| | | // |
| | | // eCSOTRaw_Alignment_A4ShiftY, // A4 Shift수치 Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_Spare1 // 스페어1 |
| | | // eCSOTRaw_Alignment_A4ShiftY, // A4 Shift��ġ Y // +-9.999999 |
| | | // eCSOTRaw_Alignment_Spare1 // �����1 |
| | | //}; |
| | | |
| | | enum eCSOTRTMSRawData{ |
| | |
| | | |
| | | |
| | | |
| | | // 공유메모리 사용시 쓸함수 CMARK================================================================================= |
| | | // ������ ���� ���Լ� CMARK================================================================================= |
| | | // Memory -> GlassResult |
| | | virtual void MemoryParsingFileToGlassResult(CGlassResult* pGlassResult, CDitGlassRawClient* pDitRawClient); |
| | | virtual int MemoryParsingReviewResultDataToFile(CGlassResult* pGlassResult, CDitGlassRawClient* pRawMemoryMgr) ; |
| | |
| | | int GetCSOTDefectCode(CString strDfectType); |
| | | CString GetGradeType(int nJudgementType);//DefectJudgement |
| | | int GetCodeType(CString strValue); |
| | | |
| | | |
| | | }; |