#include "StdAfx.h"
|
#include "ParsingGlassResult_CSOTE.h"
|
|
using namespace CHReviewResult;
|
|
CParsingGlassResult_CSOTE::CParsingGlassResult_CSOTE(void)
|
{
|
}
|
|
CParsingGlassResult_CSOTE::~CParsingGlassResult_CSOTE(void)
|
{
|
}
|
|
// [2017:5:12]-[WEZASW] : DFS Result File Format º¯°æ
|
void CParsingGlassResult_CSOTE::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; nCellIdx<nCellCount; nCellIdx++)
|
{
|
cellResult.Reset();
|
|
// Panel Information
|
cellResult.strCellID = pResultFileMgr->GetRawData(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; nDefIdx<cellResult.nDefectCount; nDefIdx++)
|
{
|
CDefectResult* pDefectResult = new CDefectResult;
|
if (pDefectResult==NULL) continue;
|
|
// Defect Information
|
pDefectResult->nDefectIdx = 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_CSOTE::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; nCameraIdx<pGlassResult->GetReviewResultCount(); nCameraIdx++)
|
{
|
const CReviewResult* pCameraResult = pGlassResult->GetReviewResult(nCameraIdx);
|
if (pCameraResult==NULL) continue;
|
|
for (int nResultIdx=0; nResultIdx<pCameraResult->GetSReviewResultCount(); 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_CSOTE::ParsingReviewResultDataCD(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr)
|
{
|
int nWriteCount = 0;
|
|
return nWriteCount;
|
}
|
|
int CParsingGlassResult_CSOTE::ParsingReviewResultDataSD(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr)
|
{
|
int nWriteCount = 0;
|
|
return nWriteCount;
|
}
|
|
// [2017:1:3]-[WEZASW] : WSI ÃøÁ¤ °á°ú ¾²±â (»ç¾ç ¹ÌÁ¤À¸·Î ±âº» ¼³Á¤) (ING)
|
int CParsingGlassResult_CSOTE::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; nCameraIdx<pGlassResult->GetWsiResultCount(); nCameraIdx++)
|
{
|
const CReviewResult* pCameraResult = pGlassResult->GetWsiResult(nCameraIdx);
|
if (pCameraResult==NULL) continue;
|
|
for (int nResultIdx=0; nResultIdx<pCameraResult->GetSReviewResultCount(); 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_CSOTE::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; nCameraIdx<pGlassResult->GetUserResultCount(); nCameraIdx++)
|
{
|
const CReviewResult* pCameraResult = pGlassResult->GetUserResult(nCameraIdx);
|
if (pCameraResult==NULL) continue;
|
|
for (int nResultIdx=0; nResultIdx<pCameraResult->GetSReviewResultCount(); 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; nGlass<pResultFileMgr->GetGlassCount(); nGlass++)
|
{
|
pResultFileMgr->SetGlassData(nGlass, 58, nMNTCnt);
|
pResultFileMgr->SetGlassData(nGlass, 59, nMNTPADCnt);
|
}
|
|
return nWriteCount;
|
}
|
|
int CParsingGlassResult_CSOTE::ParsingMeasureResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr)
|
{
|
return 0;
|
}
|
|
int CParsingGlassResult_CSOTE::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_CSOTE::GetGrayType(const CString& strValue)
|
{
|
if (strValue == "BRIGHT") return DEFECT_GRAY_WHITE;
|
else return DEFECT_GRAY_BLACK;
|
|
return DEFECT_GRAY_NONE;
|
}
|
|
CString CParsingGlassResult_CSOTE::GetGrayType(const int& nValue)
|
{
|
if (nValue == DEFECT_GRAY_BLACK) return _T("B");
|
else return _T("W");
|
|
return _T("NONE");
|
}
|
|
int CParsingGlassResult_CSOTE::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_CSOTE::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_CSOTE::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_CSOTE::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_CSOTE::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;
|
}
|