| | |
| | | BOOL CAnaResultFile::MakeAnaFile(CgrmGlassRawData* pData) |
| | | { |
| | | //return TRUE; |
| | | |
| | | /* < KJG 20220225 - #4000 MOD Start >*/ |
| | | //CString strFilePathName; |
| | | //strFilePathName.Format("%s\\%sana", pData->GetGlassData()->m_strPath, pData->GetGlassData()->m_strFileName); |
| | | char* pCellCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; |
| | | CString strFilePathName; |
| | | strFilePathName.Format("%s\\%sana", pData->GetGlassData()->m_strPath, pData->GetGlassData()->m_strFileName); |
| | | CString strFileName = pData->GetGlassData()->m_strFileName; |
| | | strFileName.Replace(".bin", ".csv"); |
| | | strFilePathName.Format("%s\\%s", pData->GetGlassData()->m_strPath, strFileName); |
| | | /* < KJG 20220225 - #4000 MOD End >*/ |
| | | |
| | | FILE* pf = fopen(strFilePathName.GetBuffer(0), "w"); |
| | | if (pf == NULL) |
| | |
| | | AKLOG("MakeAOIFile Fail : [%s]", strFilePathName.GetBuffer(0)); |
| | | return FALSE; |
| | | } |
| | | /* < KJG 20220225 - #4000 MOD Start >*/ |
| | | //fprintf(pf, "%s\n", pData->GetGlassData()->m_strGlassID); |
| | | //fprintf(pf, "GlassID, m_strImageName, m_strDefectCode, UMCenterAlignX, UMCenterAlignY, m_nLevelSrcMin, m_nLevelSrcMax, m_nLevelSrcAvg, m_nLevelRefMin, m_nLevelRefMax, m_nLevelRefAvg, m_nLevelDiffMin, m_nLevelDiffMax, m_nLevelDiffAvg"); |
| | | fprintf(pf, "GlassID, SubPanelID, m_strImageName, m_strDefectCode, UMCenterAlignX, UMCenterAlignY, m_nLevelSrcMin, m_nLevelSrcMax, m_nLevelSrcAvg, m_nLevelRefMin, m_nLevelRefMax, m_nLevelRefAvg, m_nLevelDiffMin, m_nLevelDiffMax, m_nLevelDiffAvg"); |
| | | /* < KJG 20220225 - #4000 MOD End >*/ |
| | | |
| | | fprintf(pf, "%s\n", pData->GetGlassData()->m_strGlassID); |
| | | fprintf(pf, "GlassID, m_strImageName, m_strDefectCode, UMCenterAlignX, UMCenterAlignY, m_nLevelSrcMin, m_nLevelSrcMax, m_nLevelSrcAvg, m_nLevelRefMin, m_nLevelRefMax, m_nLevelRefAvg, m_nLevelDiffMin, m_nLevelDiffMax, m_nLevelDiffAvg"); |
| | | for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",Zone%02d", i); |
| | | //210123 CJH - Zoneë³ min, max, avg ê° í기 |
| | | for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneDiffMin%02d", i); |
| | |
| | | for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++) |
| | | { |
| | | _grmDefectData* pDefect = pData->GetDefectData(iDefect); |
| | | /* < KJG 20220225 - #4000 ADD Start >*/ |
| | | CString strDefectCellID; |
| | | strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]); |
| | | /* < KJG 20220225 - #4000 ADD End >*/ |
| | | if (pData->GetGlassData()->m_nScanCoordinateY == 1) //ë¶íì¤ë¹ì ê²½ì° XYë°ì |
| | | { |
| | | fprintf(pf, "%s, %s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d", |
| | | pData->GetGlassData()->m_strGlassID, pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignY / 1000.0, (double)pDefect->m_nUMCenterAlignX / 1000.0, |
| | | /* < KJG 20220225 - #4000 MOD Start >*/ |
| | | //fprintf(pf, "%s, %s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d", |
| | | // pData->GetGlassData()->m_strGlassID, pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignY / 1000.0, (double)pDefect->m_nUMCenterAlignX / 1000.0, |
| | | fprintf(pf, "%s, %s, %s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d", |
| | | pData->GetGlassData()->m_strGlassID, strDefectCellID.GetBuffer(0), pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignY / 1000.0, (double)pDefect->m_nUMCenterAlignX / 1000.0, |
| | | pDefect->m_nLevelSrcMin, pDefect->m_nLevelSrcMax, pDefect->m_nLevelSrcAvg, |
| | | pDefect->m_nLevelRefMin, pDefect->m_nLevelRefMax, pDefect->m_nLevelRefAvg, |
| | | pDefect->m_nLevelDiffMin, pDefect->m_nLevelDiffMax, pDefect->m_nLevelDiffAvg); |
| | | /* < KJG 20220225 - #4000 MOD End >*/ |
| | | for (int iz = 0; iz < MAX_ZONE_NUM; iz++) |
| | | { |
| | | fprintf(pf, ",%d", pDefect->m_sZonePixelCount[iz]); |
| | |
| | | } |
| | | else |
| | | { |
| | | fprintf(pf, "%s, %s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d", |
| | | pData->GetGlassData()->m_strGlassID, pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignX / 1000.0, (double)pDefect->m_nUMCenterAlignY / 1000.0, |
| | | /* < KJG 20220225 - #4000 MOD Start >*/ |
| | | //fprintf(pf, "%s, %s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d", |
| | | // pData->GetGlassData()->m_strGlassID, pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignX / 1000.0, (double)pDefect->m_nUMCenterAlignY / 1000.0, |
| | | fprintf(pf, "%s, %s, %s, %s, %.3lf, %.3lf, %d, %d, %d, %d, %d, %d, %d, %d, %d", |
| | | pData->GetGlassData()->m_strGlassID, strDefectCellID.GetBuffer(0), pDefect->m_strAoiImageName, pDefect->m_strDefectCode, (double)pDefect->m_nUMCenterAlignX / 1000.0, (double)pDefect->m_nUMCenterAlignY / 1000.0, |
| | | pDefect->m_nLevelSrcMin, pDefect->m_nLevelSrcMax, pDefect->m_nLevelSrcAvg, |
| | | pDefect->m_nLevelRefMin, pDefect->m_nLevelRefMax, pDefect->m_nLevelRefAvg, |
| | | pDefect->m_nLevelDiffMin, pDefect->m_nLevelDiffMax, pDefect->m_nLevelDiffAvg); |
| | | /* < KJG 20220225 - #4000 MOD End >*/ |
| | | for (int iz = 0; iz < MAX_ZONE_NUM; iz++) |
| | | { |
| | | fprintf(pf, ",%d", pDefect->m_sZonePixelCount[iz]); |
| | |
| | | #define new DEBUG_NEW |
| | | #endif |
| | | |
| | | #define CUSTOMIZE_RECIPE_PATH "C:\\DIT_Review\\Recipe" |
| | | #define CUSTOMIZE_RECIPE_PATH "D:\\DIT_Review\\Recipe" |
| | | |
| | | CCustomizeReview::CCustomizeReview(void) |
| | | { |
| | |
| | | PUSHBUTTON "Manual\nFTP Upload",IDC_BTN_FTP_MANUALUPLOAD,418,20,39,31,BS_MULTILINE | WS_DISABLED |
| | | LTEXT "Stack File",IDC_STATIC,16,100,30,8 |
| | | LTEXT "RawMerge File",IDC_STATIC,15,115,46,8 |
| | | CONTROL "",IDC_CHECK_RAWMERGEFILEREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,72,115,16,10 |
| | | CONTROL "",IDC_CHECK_RAWMERGEFILEREAD,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,72,115,16,10 |
| | | EDITTEXT IDC_EDIT_RAWMERGE_LOCALSAVEPATH,94,112,121,14,ES_AUTOHSCROLL |
| | | END |
| | | |
| | |
| | | ON_BN_CLICKED(IDC_BTN_STACKAPPLY, &CDitGlassRawMessengerDlg::OnBnClickedBtnStackapply) |
| | | ON_BN_CLICKED(IDC_TEST_CMD, &CDitGlassRawMessengerDlg::OnBnClickedTestCmd) |
| | | ON_BN_CLICKED(IDC_BTN_FTP_MANUALUPLOAD, &CDitGlassRawMessengerDlg::OnBnClickedBtnFtpManualupload) |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | ON_WM_COPYDATA() |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | END_MESSAGE_MAP() |
| | | |
| | | void GetCompileTime(tm& timestruct) |
| | |
| | | akFileDB.getItem("DataMaxNumCell", &m_ConfigOption.m_nMaxDataNumCell, 200); |
| | | akFileDB.getItem("DataMaxNumDefect", &m_ConfigOption.m_nMaxDataNumDefect, 50000); |
| | | akFileDB.getItem("SelectRawType", &m_ConfigOption.m_nSelectRawType, 0); |
| | | akFileDB.getItem("LogFilePath", m_ConfigOption.m_strLogFilePath, "c:\\AOIServer\\LogRawMessenger\\LogRawMessenger"); |
| | | akFileDB.getItem("LogFilePath", m_ConfigOption.m_strLogFilePath, "D:\\AOIServer\\LogRawMessenger\\LogRawMessenger"); |
| | | akFileDB.getItem("Stack_Use", &m_ConfigOption.m_bUseStack, 0); |
| | | akFileDB.getItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath, "D:\\DIT_ResultData\\Stack"); |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | akFileDB.getItem("RawMerge_Use", &m_ConfigOption.m_bUseRawMerge, 0); |
| | | akFileDB.getItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath, "D:\\DIT_ResultData\\RawMerge"); |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | akFileDB.getItem("Stack_EquipID",m_ConfigOption.m_strStackEquipID, "AAAAA"); |
| | | akFileDB.getItem("Stack_Param1",m_ConfigOption.m_strStackParam1, ""); |
| | | akFileDB.getItem("Stack_Param2",m_ConfigOption.m_strStackParam2, ""); |
| | |
| | | |
| | | CreateDirectory(strPath, NULL); |
| | | //CakLoggerExt::getInstance()->setWriteFileMode(m_ConfigOption.m_strLogFilePath); |
| | | CakLoggerExt::getInstance()->setWriteFileMode2("C:\\DIT_LogData\\", "logGlassRawMessenger"); |
| | | CakLoggerExt::getInstance()->setWriteFileMode2("D:\\DIT_LogData\\", "logGlassRawMessenger"); |
| | | CakLoggerExt::getInstance()->m_hParent = GetSafeHwnd(); |
| | | |
| | | m_ctrlLoggerList; |
| | |
| | | |
| | | akFileDB.setItem("Stack_Use", m_ConfigOption.m_bUseStack); |
| | | akFileDB.setItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath); |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | akFileDB.setItem("RawMerge_Use", m_ConfigOption.m_bUseRawMerge); |
| | | akFileDB.setItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath); |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | akFileDB.setItem("Stack_EquipID", m_ConfigOption.m_strStackEquipID); |
| | | akFileDB.setItem("Stack_Param1",m_ConfigOption.m_strStackParam1); |
| | | akFileDB.setItem("Stack_Param2",m_ConfigOption.m_strStackParam2); |
| | |
| | | { |
| | | m_ConfigOption.m_bUseStack = ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->GetCheck(); |
| | | GetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH,m_ConfigOption.m_strStackLocalPath, 256); |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_ConfigOption.m_bUseRawMerge = ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->GetCheck(); |
| | | GetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath, 256); |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | GetDlgItemText(IDC_EDIT_STACK_EQUIPID,m_ConfigOption.m_strStackEquipID, 32); |
| | | GetDlgItemText(IDC_EDIT_STACK_PARAM1,m_ConfigOption.m_strStackParam1, 32); |
| | | GetDlgItemText(IDC_EDIT_STACK_PARAM2,m_ConfigOption.m_strStackParam2, 32); |
| | |
| | | |
| | | |
| | | } |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | BOOL CDitGlassRawMessengerDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) |
| | | { |
| | | // TODO: ì¬ê¸°ì ë©ìì§ ì²ë¦¬ê¸° ì½ë를 ì¶ê° ë°/ëë 기본ê°ì í¸ì¶í©ëë¤. |
| | | CDitGlassRawServer* pServer = (CDitGlassRawServer*)&m_Server; |
| | | CgrmGlassRawData* pRawDataBuffer = &m_GlassRawDataBuffer; |
| | | pRawDataBuffer->ImportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData(), true); |
| | | CFTPCopyDataParam* FTPCopyDataParam = ((CFTPCopyDataParam*)pCopyDataStruct->lpData); |
| | | switch (pCopyDataStruct->dwData) |
| | | { |
| | | case COPYDATA_RAW_DOWNLOAD_ACK: |
| | | { |
| | | if (FTPCopyDataParam->m_nProcessType == CFTPCopyDataParam::FTPProcessType_DownFile && pServer->GetGlassRawInfo()->m_ServerProcStep == APS_GlassLoading && m_pGlassRawMaker->GetEnableFtpAck() == TRUE) |
| | | { |
| | | if (FTPCopyDataParam->m_nSendResultCode == TRUE) |
| | | { |
| | | m_pGlassRawMaker->SetEnableFtpAck(FALSE); |
| | | m_pGlassRawMaker->SearchFIle(pRawDataBuffer); |
| | | break; |
| | | } |
| | | else |
| | | { |
| | | m_nMaxMergeList++; |
| | | m_pGlassRawMaker->DownLoadMergeFile(pRawDataBuffer); |
| | | if (m_nMaxMergeList > 10) |
| | | { |
| | | m_nMaxMergeList = 0; |
| | | break; |
| | | } |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | break; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | return CDialog::OnCopyData(pWnd, pCopyDataStruct); |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | |
| | | #define UM_GLASSRAW_CLIENTMESSAGE WM_USER+0x1231 |
| | | #define UM_TRAYICON_MSG WM_USER + 0x1230 |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | #define COPYDATA_RAW_DOWNLOAD_ACK 11 |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | |
| | | // CDitGlassRawMessengerDlg ëí ìì |
| | | class CDitGlassRawMessengerDlg : public CDialog |
| | | { |
| | |
| | | char m_strStackParam1[32]; |
| | | char m_strStackParam2[32]; |
| | | |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | int m_bUseRawMerge; |
| | | char m_strRawMergeLocalPath[256]; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | }m_ConfigOption; |
| | | void WriteConfigFile(); |
| | | |
| | |
| | | public: |
| | | static void threadMain(void* arg); |
| | | int m_nThreadMainFlag; |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | int m_nMaxMergeList=0; |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | |
| | | public: |
| | | CString m_strGlassID; |
| | |
| | | afx_msg void OnBnClickedBtnStackapply(); |
| | | afx_msg void OnBnClickedTestCmd(); |
| | | afx_msg void OnBnClickedBtnFtpManualupload(); |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct); |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | }; |
| | |
| | | || sizeof(_grmCellData) != m_pGlassRawInfo->m_nSizeOfCellData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfDefectData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfRawMergeData) |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | { |
| | | return FALSE; |
| | | } |
| | |
| | | m_pGlassRawInfo->m_nCellMaxDataNum = nCellNum; |
| | | m_pGlassRawInfo->m_nDefectMaxDataNum = nDefectNum; |
| | | m_pGlassRawInfo->m_nStackMaxDataNum = nDefectNum; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_pGlassRawInfo->m_nRawMergeMaxDataNum = nDefectNum; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | m_pGlassRawInfo->m_nGlassRawDataSize; |
| | | { |
| | |
| | | m_pGlassRawInfo->m_nStackDataPoint = nDataNum; |
| | | nDataNum += (m_pGlassRawInfo->m_nSizeOfStackData + m_pGlassRawInfo->m_nSizeOfStackData % 4)*nDefectNum; |
| | | |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_pGlassRawInfo->m_nRawMergeDataPoint = nDataNum; |
| | | nDataNum += (m_pGlassRawInfo->m_nSizeOfRawMergeData + m_pGlassRawInfo->m_nSizeOfRawMergeData % 4)*nDefectNum; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | m_pGlassRawInfo->m_nGlassRawDataSize = nDataNum; |
| | | } |
| | |
| | | m_pGlassRawInfo->m_nSizeOfCellData = sizeof(_grmCellData); |
| | | m_pGlassRawInfo->m_nSizeOfDefectData = sizeof(_grmDefectData); |
| | | m_pGlassRawInfo->m_nSizeOfStackData = sizeof(_grmDefectData); |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_pGlassRawInfo->m_nSizeOfRawMergeData = sizeof(_grmDefectData); |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4; |
| | | } |
| | |
| | | m_pCellData = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint]; |
| | | m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint]; |
| | | m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint]; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint]; |
| | | |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | return TRUE; |
| | | } |
| | |
| | | _grmCellData* GetCellData(int nIndex){return &m_pCellData[nIndex];}; |
| | | _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; |
| | | _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex]; }; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | _grmDefectData* GetRawMergeData(int nIndex) { return &m_pRawMergeData[nIndex]; }; |
| | | |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | _grmDitGlassRawInfo* GetGlassRawInfo(){return m_pGlassRawInfo;}; |
| | | |
| | | protected: |
| | |
| | | _grmCellData* m_pCellData; |
| | | _grmDefectData* m_pDefectData; |
| | | _grmDefectData* m_pStackData; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | _grmDefectData* m_pRawMergeData; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | protected: |
| | | HANDLE m_hMapBasicInfo; |
| | |
| | | #include "akLoggerExt.h" |
| | | |
| | | CGlassRawBase::CGlassRawBase(void) |
| | | { |
| | | { /* <LJC 20211122 : #3820 ADD Start> */ |
| | | b_EnableFtpAck = FALSE; |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | } |
| | | |
| | | CGlassRawBase::~CGlassRawBase(void) |
| | |
| | | enum ReKind { Re_Other, Re_TFE_CIRCLE, Re_PI_CONVEX, Re_PI_CONCAVE, Re_PI_1, Re_PI_2, Re_PI_3 }; |
| | | |
| | | //choigudal jude fix 2012.03.07 |
| | | 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 };//2016.07.13 LHS Judge_Size ì¶ê° |
| | | enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown };/* <KYH 211129 : #3796 ADD Start> */ |
| | | enum MAP16_DefectClass { CLASS_C1 = 1, CLASS_C2, CLASS_C3, CLASS_C4, CLASS_C5, CLASS_C6, CLASS_C7, CLASS_C8, CLASS_C9, CLASS_C10, CLASS_C11, CLASS_C12, CLASS_C13, CLASS_C14, CLASS_C15, CLASS_C16 }; |
| | | enum MAP16_SizeType { SIZE_SS = 0, SIZE_SM, SIZE_SL, SIZE_SOH, SIZE_IDX_MAX }; |
| | | enum MAP16_PeakType { PEEK_PS = 0, PEEK_PL, PEEK_PH, PEEK_POH, PEAK_IDX_MAX }; |
| | |
| | | virtual BOOL SequenceFtpUpload(char* pRawFileName){return TRUE;}; |
| | | |
| | | virtual void NotifyUpdateOptionInfo(){}; |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | virtual void DownLoadMergeFile(CgrmGlassRawData* pData) { return; }; |
| | | virtual void SearchFIle(CgrmGlassRawData* pData) { return; }; |
| | | |
| | | BOOL GetEnableFtpAck() { return b_EnableFtpAck; }; |
| | | void SetEnableFtpAck(BOOL b_value) { b_EnableFtpAck = b_value; }; |
| | | |
| | | BOOL b_EnableFtpAck; |
| | | |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | }; |
| | |
| | | #define NETWORK_MURARAW_PATH "\\\\126.100.100.1\\d\\DIT_ResultData\\Mura\\RAW" //0405nwh |
| | | #define NETWORK_MURA_IMAGE_PATH "\\\\126.100.100.1\\d\\DIT_ResultData\\Mura\\IMG" //0405nwh |
| | | |
| | | //KYH Stack Local ê²½ë¡ ì¶ê° |
| | | #define NETWORK_AOISTACKLOCAL_PATH "\\\\126.100.100.1\\d\\DIT_ResultData\\Stack" |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | #define NETWORK_AOIRAWMERGELOCAL_PATH "D:\\DIT_ResultData\\RawMerge" |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | |
| | | char* g_pCellCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; |
| | | |
| | | void _TimeDelay(int delay) |
| | |
| | | MSG msg; |
| | | BOOL fRst = FALSE; |
| | | |
| | | clock_t lBlockTime = delay + clock(); |
| | | ULONGLONG lBlockTime = delay + GetTickCount64(); |
| | | |
| | | while (lBlockTime > clock()) |
| | | while (lBlockTime > GetTickCount64()) |
| | | { |
| | | fRst = (BOOL)PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); |
| | | if (fRst) |
| | |
| | | |
| | | BOOL CGlassRawCPJT::SequenceGlassLoading( CgrmGlassRawData* pData ) |
| | | { |
| | | //ì¤íê¸°ë¥ |
| | | SetEnableFtpAck(FALSE); |
| | | m_nRawMergeIdx = 0; |
| | | if(m_StackResult.getStackUse()) |
| | | { |
| | | |
| | | CString strStackFileLocalPath; |
| | | strStackFileLocalPath.Format("%s\\%s", NETWORK_AOISTACKLOCAL_PATH, pData->GetGlassData()->m_strGlassID); |
| | | |
| | | CFileFind File; |
| | | |
| | | if (File.FindFile(strStackFileLocalPath)) |
| | | { |
| | | File.FindNextFile(); |
| | | strStackFileLocalPath = File.GetFilePath(); |
| | | DeleteFile(strStackFileLocalPath); |
| | | Sleep(10); |
| | | } |
| | | else |
| | | { |
| | | AKLOG("Delete Stack File Fail [%s]", strStackFileLocalPath); |
| | | } |
| | | |
| | | |
| | | //201218 CJH - Stack Download ìë |
| | | SendMessageFTPDownloadStack(pData->GetGlassData()); |
| | | |
| | | m_StackResult.StackFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | } |
| | | if (m_RawMergeResult.getRawMergeUse()) |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | if (pData->GetGlassData()->m_bRawMergeUse) |
| | | { |
| | | SendMessageFTPDownloadDataFile(pData->GetGlassData()); |
| | | m_RawMergeResult.RawMergeFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | CString strRawFileLocalPath; |
| | | strRawFileLocalPath.Format("%s\\%s", NETWORK_AOIRAWMERGELOCAL_PATH, pData->GetGlassData()->m_strGlassID); |
| | | CFileFind File; |
| | | if (File.FindFile(strRawFileLocalPath)) |
| | | { |
| | | File.FindNextFile(); |
| | | strRawFileLocalPath = File.GetFilePath(); |
| | | DeleteFile(strRawFileLocalPath); |
| | | Sleep(10); |
| | | } |
| | | SetEnableFtpAck(TRUE); |
| | | DownLoadMergeFile(pData); |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | return FALSE; |
| | | |
| | | |
| | | if (1) ReadMuraFile(pData); |
| | | //if(1) ReadMuraFile(pData); 211012 KJG - QD Macro ê°ë³ ì
ë¡ë íë¯ë¡ Macro ë°ì´í° ì ì ì ê±° ìì² |
| | | |
| | | |
| | | if (WriteAOIFile(pData) == FALSE) |
| | |
| | | //210218 CJH - ê²ì¬ ì¢
ë£ì ê²°ê³¼íì¼ ë° CCD Image ì
ë¡ë |
| | | SendMessageFTPUploadRaw(pData->GetGlassData()); |
| | | |
| | | /* <KYH 211129 : #3806 ADD Start> */ |
| | | char pServerPath[256] = {}; |
| | | char pServerFile[256] = {}; |
| | | |
| | | CString strGlassID = pData->GetGlassData()->m_strGlassID; |
| | | CString strGlassIDLevel6th = strGlassID.Left(6); |
| | | CString strStepID = pData->GetGlassData()->m_strStepID; |
| | | CString strProcessID = pData->GetGlassData()->m_strProcessID; |
| | | CString strFileName; |
| | | |
| | | strcpy(pServerFile, "*.*"); |
| | | |
| | | strFileName.Format("%s", strGlassID); |
| | | strFileName.MakeLower(); |
| | | |
| | | sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); |
| | | |
| | | strStepID.MakeLower(); |
| | | strGlassID.MakeLower(); |
| | | strGlassIDLevel6th.MakeLower(); |
| | | strProcessID.MakeLower(); |
| | | |
| | | // if (strGlassID.GetLength() > 6) |
| | | // sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID); |
| | | // else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | /* <KYH 211129 : #3806 ADD End> */ |
| | | |
| | | |
| | | BOOL bIsBDI = strcmp((pData->GetGlassData()->m_strLine), _T("BDI")) == 0 ? TRUE : FALSE; |
| | | if (bIsBDI) |
| | | { |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE); |
| | | |
| | | /* <KYH 211129 : #3806 ADD Start> */ |
| | | CString strRawFilePathName = NULL; |
| | | CString strLine = NULL; |
| | | strRawFilePathName += LOCAL_RAWPATH_INFO_INI_PATH; |
| | | strRawFilePathName += RAWINFO_FILE_NAME; |
| | | FILE* pf = fopen(strRawFilePathName.GetBuffer(0), "w"); |
| | | if (pf != NULL) |
| | | { |
| | | strLine = pServerPath + strFileName; |
| | | fprintf(pf, "[RESULT_PATH]\n"); |
| | | fprintf(pf, "RAWPATH= X:\%s\n", strLine.GetBuffer(0)); |
| | | SetRawFilePath(strLine.GetBuffer(0)); |
| | | fprintf(pf, "SUMPATH= \n"); |
| | | fprintf(pf, "IMGPATH= Z:\%s\n", strLine.GetBuffer(0)); |
| | | fprintf(pf, "DISK=FILESERVER\n"); |
| | | fclose(pf); |
| | | } |
| | | } |
| | | |
| | | /* <KYH 211129 : #3806 ADD End> */ |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_MURA_IMAGE);//0405nwh |
| | | |
| | | return TRUE; |
| | |
| | | pData->GetGlassData()->m_strFileName; |
| | | strcpy(pData->GetGlassData()->m_strPath, NETWORK_AOIRAWDFS_PATH); |
| | | |
| | | if(1) ReadMuraFile(pData); |
| | | //if(1) ReadMuraFile(pData); 211012 KJG - QD Macro ê°ë³ ì
ë¡ë íë¯ë¡ Macro ë°ì´í° ì ì ì ê±° ìì² |
| | | |
| | | if(WriteAOIFile(pData) == FALSE) |
| | | return FALSE; |
| | |
| | | } |
| | | |
| | | strFilePathName.Format("%s\\%s", pGlass->m_strPath, strFileName);//pGlass->m_strFileName); |
| | | //strFilePathName.Format("C:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | //strFilePathName.Format("D:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | |
| | | // ê¸ë¼ì¤ IDë§ ì¡´ì¬íì¬ ì¬ê²ì¬ ì íì¼ ìì± ì¤í¨. ìì íë¤ |
| | | DeleteFile(strFilePathName); |
| | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | //GLASSDATA |
| | | { |
| | | makeDataGlass(strLine, pGlass); |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //makeDataGlass(strLine, pGlass); |
| | | makeDataGlass(strLine, pData, pGlass); |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | fprintf(pf, "%s\n", strLine.GetBuffer(0)); |
| | | } |
| | | |
| | |
| | | { |
| | | strLine.Empty(); |
| | | CString strValue; |
| | | |
| | | strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR TB TW RB RW T_STACK MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT BR_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT"; //53ea |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; |
| | | strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_NG MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; //56ea |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | strLine += strValue; strLine += "\n"; |
| | | strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 CORNER_GRAY_0 AVG_AMP_0 FFT_VAR_0 FFT_VAH_0 FFT_VAQ_0 FFT_PK_0 AVG_GRAY_1 PORTION_1 CORNER_GRAY_1 AVG_AMP_1 FFT_VAR_1 FFT_VAH_1 FFT_VAQ_1 FFT_PK_1 AVG_GRAY_2 PORTION_2 CORNER_GRAY_2 AVG_AMP_2 FFT_VAR_2 FFT_VAH_2 FFT_VAQ_2 FFT_PK_2 AVG_GRAY_3 PORTION_3 CORNER_GRAY_3 AVG_AMP_3 FFT_VAR_3 FFT_VAH_3 FFT_VAQ_3 FFT_PK_3"; //54ea 21-06-21 Mura Data ì¶ê° |
| | | strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT"; //31ea /* <KYH 211129 : #3796 MOD Start> */ |
| | | strLine += strValue; strLine += "\n"; |
| | | //210405 |
| | | //ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG SCAN_AI REVIEW_AI INS_MODE INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK |
| | | strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea |
| | | strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE LINE_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea |
| | | strLine += strValue; |
| | | |
| | | } |
| | | #define SPRINTRAWSTART char strItemValue[1024];int nItemValueLen, nItemValuePos = 0;memset(strItemValue, ' ', sizeof(char)*1024) |
| | | #define SPRINTRAW(ITEMSIZE, fmt, ...) nItemValueLen = sprintf(strItemValue+nItemValuePos, fmt,##__VA_ARGS__); strItemValue[nItemValuePos+ nItemValueLen] = ' ';nItemValuePos+=ITEMSIZE+1 |
| | | #define SPRINTRAWEND strItemValue[nItemValuePos - 1] = 0; strLine = strItemValue |
| | | void CGlassRawCPJT::makeDataGlass( CString& strLine, _grmGlassData* pGlassData ) |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //void CGlassRawCPJT::makeDataGlass( CString& strLine, _grmGlassData* pGlassData ) |
| | | void CGlassRawCPJT::makeDataGlass( CString& strLine, CgrmGlassRawData* pData, _grmGlassData* pGlassData ) |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | { |
| | | SPRINTRAWSTART; |
| | | |
| | |
| | | 46 12 PAD_DATA // PAD Data ë¶ë ì |
| | | 47 12 M_DEFECT // MASK ë¶ë ì |
| | | 48 12 C_DEFECT // COMMON ë¶ë |
| | | 49 12 BR_DEFECT // SCRATCH ë¶ë ì |
| | | 49 12 BR_DEFECT // SCRATCH ë¶ë ì => LN_DEFECT // ë¼ì¸ì± ë¶ë ì |
| | | 50 12 CRACK // Crack ë¶ë ì - Image ì´¬ì ê°¯ì |
| | | 51 12 P_SHIFT // Pattern Shift ë¶ë ì - ë ìí¼ ì´ë¦ |
| | | */ |
| | |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeTR); |
| | | // 26 6 PR // Panel ì ë³´ 03 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgePR); |
| | | // 27 6 TB // Panel ì ë³´ 04 |
| | | // 27 6 NG // Panel ì ë³´ 04 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeNG); /* <KYH 211129 : #3796 ADD Start> */ |
| | | // 28 6 TB // Panel ì ë³´ 04 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeTB); |
| | | // 28 6 TW // Panel ì ë³´ 05 |
| | | // 29 6 TW // Panel ì ë³´ 05 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeTW); |
| | | // 29 6 RB // Panel ì ë³´ 06 |
| | | // 30 6 RB // Panel ì ë³´ 06 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeRB); |
| | | // 30 6 RW // Panel ì ë³´ 07 |
| | | // 31 6 RW // Panel ì ë³´ 07 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeRW); |
| | | // 31 6 T_STACK // Panel ì ë³´ 08 SD+SP ì ì
ë ¥ |
| | | // 32 6 T_STACK // Panel ì ë³´ 08 SD+SP ì ì
ë ¥ |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumStackSD + pGlassData->m_nDefectNumStackSP); |
| | | //32 6 BMDF // Panel ì ë³´ 09 -> ë³ê²½ MAX_AVG_GRAY 04/12 nwh |
| | | if (strlen(pGlassData->m_strMaxAvgGray) == 0) |
| | | // 33 6 NO_DEFECT // Panel ì ë³´ 09 |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeND); /* <KYH 211129 : #3796 ADD Start> */ |
| | | //34 6 BMDF // Panel ì ë³´ 10 -> ë³ê²½ MAX_AVG_GRAY 04/12 nwh |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //if (strlen(pGlassData->m_strMaxAvgGray) == 0) |
| | | //{ |
| | | // SPRINTRAW(12, "*"); |
| | | //} |
| | | //else |
| | | //{ |
| | | // SPRINTRAW(12, "%s", pGlassData->m_strMaxAvgGray); |
| | | //} |
| | | int nMaxCellNG = 0; |
| | | for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | _grmCellData* pCell = pData->GetCellData(iCell); |
| | | nMaxCellNG = max(nMaxCellNG, pCell->m_nDefectNumJudgeNG); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "%s", pGlassData->m_strMaxAvgGray); |
| | | } |
| | | // 33 6 CJ // Panel ì ë³´ 10 -> ë³ê²½ MAX_PORTION 04/12 nwh |
| | | SPRINTRAW(12, "%d", nMaxCellNG); |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | // 35 6 CJ // Panel ì ë³´ 11 -> ë³ê²½ MAX_PORTION 04/12 nwh |
| | | if (strlen(pGlassData->m_strMaxPortion) == 0) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | |
| | | { |
| | | SPRINTRAW(12, "%s", pGlassData->m_strMaxPortion); |
| | | } |
| | | // 34 6 OK_CELL // OK Cell Count |
| | | // 36 6 OK_CELL // OK Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 35 6 RJ_CELL // RJ Cell Count |
| | | // 37 6 RJ_CELL // RJ Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 36 6 RW_CELL // RW Cell Count |
| | | // 38 6 RW_CELL // RW Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 37 6 NR_CELL // NR Cell Count |
| | | // 39 6 NR_CELL // NR Cell Count |
| | | SPRINTRAW(12, "*"); |
| | | // 38 6 MASK_CELL // MASK Cell Count //201215 CJH - CSTIDë¡ ë³ê²½ |
| | | // 40 6 MASK_CELL // MASK Cell Count //201215 CJH - CSTIDë¡ ë³ê²½ |
| | | if (strlen(pGlassData->m_strCSTID) == 0) |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeMD); |
| | | // 48 6 C_DEFECT // COMMON ë¶ë |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeCD); |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | // 49 6 S_DEFECT // SCRATCH ë¶ë ì |
| | | SPRINTRAW(12, "*"); |
| | | //SPRINTRAW(12, "*"); |
| | | // 49 6 LN_DEFECT // Line ë¶ë ì |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeLine); |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | | // 50 6 CRACK // Crack ë¶ë ì //201217 CJH - Image ì´¬ì ê°ìë¡ ë³ê²½ |
| | | //SPRINTRAW(12, "%d", pGlassData->m_nDefectNumLocCrack); |
| | | SPRINTRAW(12, "%d", pGlassData->m_nReviewNum); |
| | |
| | | SPRINTRAW(12, "UNUSE"); |
| | | } |
| | | |
| | | if (pGlassData->m_bEdgeCrackUse) |
| | | { |
| | | SPRINTRAW(12, "%d", pGlassData->m_nDefectNumLocCrack); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "UNUSE"); |
| | | } |
| | | |
| | | SPRINTRAWEND; //ì¤ì!!! ì ¤ ë§ì§ë§ì ê¼ ìì´ì¼í¨!!!(ìì ê¸ì§) [ê¹íí2020/9/23] |
| | | } |
| | | |
| | |
| | | 19 12 PAD_DATA // PAD Data Defect Count |
| | | 20 12 M_DEFECT // MASK Defect Count |
| | | 21 12 C_DEFECT // COMMON Defect Count |
| | | 22 12 S_DEFECT // SCRATCH Defect Count |
| | | 22 12 S_DEFECT // SCRATCH Defect Count ==> LN_DEFECT |
| | | 23 12 CRACK // CRACK Defect Count |
| | | 24 12 P_SHIFT // Pattern Shift Defect Count |
| | | */ |
| | |
| | | // 21 6 C_DEFECT // COMMON Defect Count |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeCD); |
| | | |
| | | // 22 6 S_DEFECT -> 22 6 PRO_IMAGE ë³ê²½ nwh0404 |
| | | if (strlen(pCellData->m_strProImage)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strProImage); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12,"*"); |
| | | } |
| | | /* <KYH 211129 : #3796 MOD Start> */ |
| | | |
| | | // 23 12 AVG_GRAY_0 |
| | | if (strlen(pCellData->m_strAvgGray_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 24 12 PORTION_0 |
| | | if (strlen(pCellData->m_strPortion_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 25 12 CORNER_GRAY_0 |
| | | if (strlen(pCellData->m_strCorner_Gray_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 26 12 AVG_AMP_0 |
| | | if (strlen(pCellData->m_strAvgAmp_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 27 12 FFT_VAR_0 |
| | | if (strlen(pCellData->m_strFFTVar_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 28 12 FFT_VAH_0 |
| | | if (strlen(pCellData->m_strFFTVah_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 29 12 FFT_VAQ_0 |
| | | if (strlen(pCellData->m_strFFTVaq_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 30 12 FFT_PK_0 |
| | | if (strlen(pCellData->m_strFFTPK_0)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_0); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 31 12 AVG_GRAY_1 |
| | | if (strlen(pCellData->m_strAvgGray_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 32 12 PORTION_1 |
| | | if (strlen(pCellData->m_strPortion_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 33 12 CORNER_GRAY_1 |
| | | if (strlen(pCellData->m_strCorner_Gray_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 34 12 AVG_AMP_1 |
| | | if (strlen(pCellData->m_strAvgAmp_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 35 12 FFT_VAR_1 |
| | | if (strlen(pCellData->m_strFFTVar_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 36 12 FFT_VAH_1 |
| | | if (strlen(pCellData->m_strFFTVah_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 37 12 FFT_VAQ_1 |
| | | if (strlen(pCellData->m_strFFTVaq_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 38 12 FFT_PK_1 |
| | | if (strlen(pCellData->m_strFFTPK_1)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_1); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 39 12 AVG_GRAY_2 |
| | | if (strlen(pCellData->m_strAvgGray_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 40 12 PORTION_2 |
| | | if (strlen(pCellData->m_strPortion_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 41 12 CORNER_GRAY_2 |
| | | if (strlen(pCellData->m_strCorner_Gray_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 42 12 AVG_AMP_2 |
| | | if (strlen(pCellData->m_strAvgAmp_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 43 12 FFT_VAR_2 |
| | | if (strlen(pCellData->m_strFFTVar_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 44 12 FFT_VAH_2 |
| | | if (strlen(pCellData->m_strFFTVah_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 45 12 FFT_VAQ_2 |
| | | if (strlen(pCellData->m_strFFTVaq_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 46 12 FFT_PK_2 |
| | | if (strlen(pCellData->m_strFFTPK_2)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_2); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 47 12 AVG_GRAY_3 |
| | | if (strlen(pCellData->m_strAvgGray_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgGray_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 48 12 PORTION_3 |
| | | if (strlen(pCellData->m_strPortion_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strPortion_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | //kyh 0622 |
| | | // 49 12 CORNER_GRAY_3 |
| | | if (strlen(pCellData->m_strCorner_Gray_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 50 12 AVG_AMP_3 |
| | | if (strlen(pCellData->m_strAvgAmp_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 51 12 FFT_VAR_3 |
| | | if (strlen(pCellData->m_strFFTVar_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVar_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 52 12 FFT_VAH_3 |
| | | if (strlen(pCellData->m_strFFTVah_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVah_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 53 12 FFT_VAQ_3 |
| | | if (strlen(pCellData->m_strFFTVaq_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | |
| | | // 54 12 FFT_PK_3 |
| | | if (strlen(pCellData->m_strFFTPK_3)) |
| | | { |
| | | SPRINTRAW(12, "%s", pCellData->m_strFFTPK_3); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 22 6 PRO_IMAGE -> LN_DEFECT ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeLine); |
| | | // 23 6 AVG_GRAY -> TR ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeTR); |
| | | // 24 6 PORTION -> PR ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgePR); |
| | | // 25 6 CORNER_GRAY -> NG ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeNG); |
| | | // 26 6 AVG_AMP -> RB ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeRB); |
| | | // 27 6 FFT_VAR -> RW ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeRW); |
| | | // 28 6 TB ì¶ê° |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeTB); //KYH TB ë°ì´í° ì¶ê° |
| | | // 29 6 TW ì¶ê° |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeTW); //KYH TW ë°ì´í° ì¶ê° |
| | | // 30 6 FFT_VEH -> T_STACK ë³ê²½ |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectSDCount + pCellData->m_nDefectSPCount); |
| | | // 31 6 NO_DEFECT ì¶ê° |
| | | SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeND); //KYH ND ë°ì´í° ì¶ê° |
| | | /* <KYH 211129 : #3796 MOD End> */ |
| | | |
| | | SPRINTRAWEND; //ì¤ì!!! ì ¤ ë§ì§ë§ì ê¼ ìì´ì¼í¨!!!(ìì ê¸ì§) [ê¹íí2020/9/23] |
| | | } |
| | |
| | | // 16 2 STACK_COUNT // Count of Defect detected step |
| | | // 17 60 STACK_STEP // Flow(Step) of defect detection |
| | | // 18 16 IMAGE_FILE // Image file Name |
| | | // 19 12 DSC Code |
| | | // 19 12 DSC Code ==> LINE_CODE |
| | | // 20 12 Image ë¶ë¥ Code |
| | | // 21 12 ë¶ëì´ ìì¹í Zone No ì
ë ¥ |
| | | // 22 12 ë¶ë í¬ê¸° (L,H,M,S) |
| | |
| | | { |
| | | SPRINTRAW(16, "*"); |
| | | } |
| | | // 19 12 DSC_CODE // Common 01 DSC Code |
| | | /*< LHS 20211029 - #3783 MOD Start >*/ |
| | | // 19 12 DSC_CODE // Common 01 DSC Code ==> LINE_CODE |
| | | if (strlen(pDefectData->m_strLNDefectCode)) |
| | | { |
| | | SPRINTRAW(12, "%s", pDefectData->m_strLNDefectCode); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | //SPRINTRAW(12, "*"); |
| | | /*< LHS 20211029 - #3783 MOD End >*/ |
| | | // 20 12 VC_CODE // Common 02 Image ë¶ë¥ Code |
| | | SPRINTRAW(12, "*"); |
| | | // 21 12 ZONE_NO // Common 03 ë¶ëì´ ìì¹í Zone No ì
ë ¥ |
| | |
| | | SPRINTRAW(12, "*"); |
| | | } |
| | | // 32 NO USE -> CCD Image ì 무 |
| | | if (strlen(pDefectData->m_strAoiImageName)) |
| | | if (strrchr(pDefectData->m_strAoiImageName, '*') != NULL || strlen(pDefectData->m_strAoiImageName) < 4) // KYH 210826 CCD ì´ë¯¸ì§ 문ìì´ìì *ì´ ììê²½ì° X 머ì§í ê² |
| | | { |
| | | SPRINTRAW(12, "O"); |
| | | SPRINTRAW(12, "X"); |
| | | } |
| | | else |
| | | { |
| | | SPRINTRAW(12, "X"); |
| | | SPRINTRAW(12, "O"); |
| | | } |
| | | // 33 12 CAM_POSITION // Common 15 Scan ë²í¸ |
| | | SPRINTRAW(12, "%d", pDefectData->m_nScanIdx); |
| | |
| | | char strRTMSFile[32] = {}; |
| | | char strServerRawFileSubPath[256] = {}; |
| | | char strServer_SubFileName[256] = {}; |
| | | |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | GetFormatDescription(FTPCMD_RAWMERGE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, strRTMSFile, strServerRawFileSubPath, strServer_SubFileName, pGlassData); |
| | | |
| | | CFTPCopyDataParam upParam; |
| | |
| | | if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) |
| | | { |
| | | } |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | } |
| | | |
| | | void CGlassRawCPJT::SendMessageFTPUploadImage( _grmGlassData* pGlassData, emFTPCommand sort) |
| | |
| | | sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); |
| | | } |
| | | break; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | case FTPCMD_RAWMERGE: |
| | | { |
| | | sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strStepID,strGlassIDLevel6th.GetBuffer(0)); // ìë² ê²½ë¡ íì¸í ìì kjg |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | char cMergeList[10][12]; |
| | | CString strMergeList[10] = {}; |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | strcpy(cMergeList[i], pGlassData->m_StrMergeList[i]); |
| | | strMergeList[i] = cMergeList[i]; |
| | | } |
| | | sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strMergeList[m_nRawMergeIdx],strGlassIDLevel6th.GetBuffer(0)); // ìë² ê²½ë¡ íì¸í ìì kjg |
| | | sprintf(pServerFile, "%s",strGlassID); |
| | | |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | sprintf(pLocalPath, "%s", m_RawMergeResult.getRawMergeLocalPath()); |
| | | sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); |
| | | } |
| | | break; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | case FTPCMD_MURA_IMAGE: //0404nwh |
| | | { // |
| | | /*CTime time = m_tmFileCreateTime; |
| | |
| | | break; |
| | | case Judge_PR: sStr.Format("PR"); |
| | | break; |
| | | /* <KYH 220117 : #3796 ADD Start>*/ |
| | | case Judge_ND: sStr.Format("ND"); |
| | | break; |
| | | /* <KYH 220117 : #3796 ADD End>*/ |
| | | case Judge_PT: sStr.Format("PT"); |
| | | break; |
| | | case Judge_Review: sStr.Format("RV"); |
| | |
| | | break; |
| | | case Judge_Rework: sStr.Format("RW"); |
| | | break; |
| | | /* < KMH 20220311 : #3954 ADD Start > */ |
| | | case Judge_LN: sStr.Format("LN"); |
| | | break; |
| | | /* < KMH 20220311 : #3954 ADD End > */ |
| | | case Judge_Unknown: sStr.Format("OK");//sStr.Format("Unknown"); //Unknownë ì¼ë¨ OK |
| | | break; |
| | | default: sStr.Format("OK");//sStr.Format("Ets"); |
| | |
| | | } |
| | | return sStr; |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | void CGlassRawCPJT::DownLoadMergeFile(CgrmGlassRawData * pData) |
| | | { |
| | | SendMessageFTPDownloadDataFile(pData->GetGlassData()); |
| | | m_nRawMergeIdx++; |
| | | return; |
| | | } |
| | | |
| | | void CGlassRawCPJT::SearchFIle(CgrmGlassRawData * pData) |
| | | { |
| | | m_RawMergeResult.ProcessRawMergeFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | |
| | | |
| | | CString CGlassRawCPJT::GetWsiDefectType(int nType) |
| | | { |
| | |
| | | virtual BOOL SequenceFtpUpload(char* pRawFileName); |
| | | |
| | | virtual void NotifyUpdateOptionInfo(){/*m_StackResult.readOptionFile();*/}; |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | virtual void DownLoadMergeFile(CgrmGlassRawData* pData); |
| | | virtual void SearchFIle(CgrmGlassRawData* pData); |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | \ |
| | | |
| | | protected: |
| | | |
| | |
| | | CString GetRawFilePath() { return m_strRawFilePath; } |
| | | |
| | | void makeDataHeader(CString& strLine, _grmGlassData* pGlassData); |
| | | void makeDataGlass(CString& strLine, _grmGlassData* pGlassData); |
| | | /*< KJG 20211229 - #3846 MOD Start >*/ |
| | | //void makeDataGlass(CString& strLine, _grmGlassData* pGlassData); |
| | | void makeDataGlass(CString& strLine, CgrmGlassRawData* pData, _grmGlassData* pGlassData); |
| | | /*< KJG 20211229 - #3846 MOD End >*/ |
| | | void makeDataCell(CString& strLine, CgrmGlassRawData* pData, _grmCellData* pCellData); |
| | | BOOL makeDataDefect(CString& strLine, CgrmGlassRawData* pData, _grmDefectData* pDefectData); |
| | | |
| | |
| | | BOOL m_bReviewEndCheck; // InspectEnd ìì Raw_im í´ëì SubFile ìì± ìí기 ìí´ ì¬ì© [ 21-03-18 KJG ] |
| | | CTime m_tmReviewStart; |
| | | CTime m_tmReviewEnd; |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | int m_nRawMergeIdx=0; |
| | | int m_nWriteRawDefectIdx; |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | }; |
| | | |
| | | struct stCellData |
| | |
| | | } |
| | | |
| | | strFilePathName.Format("%s\\%s", pGlass->m_strPath, strFileName);//pGlass->m_strFileName); |
| | | //strFilePathName.Format("C:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | //strFilePathName.Format("D:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | |
| | | |
| | | //FILE* pf = fopen(strFilePathName.GetBuffer(0), "w"); |
| | |
| | | { |
| | | CreateDirectory(LOCAL_AOIRAWDFS_PATH, NULL); |
| | | CreateDirectory(LOCAL_AOIRAWBIN_PATH, NULL); |
| | | m_MuraResultFile.readOptionFile("C:\\DIT_Review\\ReviewServerConfig\\MacroInfo.cfg"); |
| | | m_MuraResultFile.readOptionFile("D:\\DIT_Review\\ReviewServerConfig\\MacroInfo.cfg"); |
| | | |
| | | m_GlassRawRTMS.SetMuraResult(&m_MuraResultFile); |
| | | } |
| | |
| | | } |
| | | |
| | | strFilePathName.Format("%s\\%s", pGlass->m_strPath, strFileName);//pGlass->m_strFileName); |
| | | //strFilePathName.Format("C:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | //strFilePathName.Format("D:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName); |
| | | |
| | | |
| | | //FILE* pf = fopen(strFilePathName.GetBuffer(0), "w"); |
| | |
| | | else if(pCellData->m_nJudgement == Judge_Size) strValue = "Judge_Size"; //skip |
| | | else if (pCellData->m_nJudgement == Judge_TR) strValue = "Judge_TR"; |
| | | else if (pCellData->m_nJudgement == Judge_PR) strValue = "Judge_PR"; |
| | | /* <KYH 211129 : #3796 ADD Start> */ |
| | | else if (pCellData->m_nJudgement == Judge_ND) strValue = "Judge_ND"; |
| | | /* <KYH 211129 : #3796 ADD End> */ |
| | | else strValue = "Judge_OK"; |
| | | } |
| | | strLine += strValue+strDiv; |
| | |
| | | break; |
| | | case Judge_PR: sStr.Format("PR"); |
| | | break; |
| | | /* <KYH 211129 : #3796 ADD Start> */ |
| | | case Judge_ND: sStr.Format("ND"); |
| | | break; |
| | | /* <KYH 211129 : #3796 ADD Start> */ |
| | | case Judge_PT: sStr.Format("PT"); |
| | | break; |
| | | case Judge_Review: sStr.Format("RV"); |
| | |
| | | return &pBuf[nLen+1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ íí[2017/3/29] |
| | | } |
| | | |
| | | BOOL CMacroResultFile::readOptionFile( char* pFileName /*= "C:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/ ) |
| | | BOOL CMacroResultFile::readOptionFile( char* pFileName /*= "D:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/ ) |
| | | { |
| | | CakFileDB fileDB; |
| | | fileDB.openfile(pFileName); |
| | |
| | | int GetSubPanelNum(int iCell); |
| | | _MacroSubPanel* GetSubPanel(int i) { return &m_vecMacroSubPanel[i]; } |
| | | /////////////////////////////////////0404nwh |
| | | BOOL readOptionFile(char* pFileName = "C:\\AOIServer\\ConfigFile\\MacroInfo.cfg"); |
| | | BOOL readOptionFile(char* pFileName = "D:\\AOIServer\\ConfigFile\\MacroInfo.cfg"); |
| | | |
| | | _MacroDefect* FindDefect(int nX, int nY, int nFindRange = 2000/*um*/); |
| | | public: |
| | |
| | | #include <process.h> |
| | | #include "DitGlassRawClient.h" |
| | | #include "GlassRawBase.h" |
| | | #include <sstream> |
| | | |
| | | #ifdef _DEBUG |
| | | #undef THIS_FILE |
| | |
| | | BOOL CRawResultReader::openFile(char* pGlassID) |
| | | { |
| | | CString strFileName; |
| | | CDitGlassRawClient GlassRawClient; |
| | | GlassRawClient.ConnectServer(); |
| | | CDitGlassRawClient* pShared = &GlassRawClient; |
| | | |
| | | /*< KJG 20211208 : #3696 DEL Start >*/ |
| | | //CDitGlassRawClient GlassRawClient; |
| | | //GlassRawClient.ConnectServer(); |
| | | //CDitGlassRawClient* pShared = &GlassRawClient; |
| | | |
| | | _grmDefectData* pGrmStack; |
| | | //_grmDefectData* pGrmStack; |
| | | /*< KJG 20211208 : #3696 DEL End >*/ |
| | | |
| | | strFileName.Format("%s\\%s", m_strLocalPath, pGlassID); |
| | | |
| | |
| | | |
| | | if (pf == NULL) |
| | | return FALSE; |
| | | |
| | | /*< KJG 20211208 : #3696 ADD Start >*/ |
| | | CDitGlassRawClient GlassRawClient; |
| | | GlassRawClient.ConnectServer(); |
| | | CDitGlassRawClient* pShared = &GlassRawClient; |
| | | |
| | | _grmDefectData* pGrmStack; |
| | | /*< KJG 20211208 : #3696 ADD End >*/ |
| | | |
| | | std::vector<_grmDefectData> vecStackDefect; |
| | | _grmDefectData StackDefect; |
| | |
| | | if (strlen(buffer) <= 0 || pStr == NULL) |
| | | break; |
| | | |
| | | /* < KJG 20220225 - #3850 ADD Start >*/ |
| | | if (strncmp(buffer, "DATA PANEL", 10) == 0) |
| | | { |
| | | pReadPoint = buffer; |
| | | CString strtemp; |
| | | pReadPoint = getParsingData(pReadPoint, 4, &strtemp); |
| | | pReadPoint = getParsingData(pReadPoint, 5, &strtemp); |
| | | pReadPoint = getParsingData(pReadPoint, 5, &strtemp); |
| | | pReadPoint = getParsingData(pReadPoint, 27, &strtemp); |
| | | pReadPoint = getParsingData(pReadPoint, 20, &strtemp); |
| | | pReadPoint = getParsingData(pReadPoint, 20, &strtemp); |
| | | pReadPoint = getParsingData(pReadPoint, 10, &strtemp); |
| | | strncpy(pShared->GetGlassData()->m_strRawMergeStepID, strtemp.GetBuffer(0), 10 + 1); // Null 문ì ë문ì +1 |
| | | } |
| | | /* < KJG 20220225 - #3850 ADD End >*/ |
| | | if (strncmp(buffer, "DATA DEFECT", 10)) continue; |
| | | |
| | | //Defect Stack Start |
| | |
| | | StackDefect.m_DefectJudgement = Judge_TR; |
| | | else if (strtemp == "PR") |
| | | StackDefect.m_DefectJudgement = Judge_PR; |
| | | /* < KJG 20220225 - #Index ADD Start >*/ |
| | | else if (strtemp == "NG") |
| | | StackDefect.m_DefectJudgement = Judge_NG; |
| | | else if (strtemp == "ND") |
| | | StackDefect.m_DefectJudgement = Judge_ND; |
| | | /* < KJG 20220225 - #Index ADD End >*/ |
| | | else |
| | | StackDefect.m_StackInfo = Stack_Unknown; |
| | | |
| | |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp); // 미ì¬ì© |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp); // 미ì¬ì© |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp); // ZoneNum m_sZonePixelCount[i] |
| | | |
| | | stringstream ConvertZone(strtemp.GetBuffer(0)); |
| | | unsigned int nZoneHexValue; |
| | | short sZonePixelCount[16] = { 0 }; |
| | | ConvertZone >> std::hex >> nZoneHexValue; |
| | | for (int i = 0; i < 16; i++) |
| | | { |
| | | if (nZoneHexValue & 1) |
| | | { |
| | | sZonePixelCount[i] = 1; |
| | | } |
| | | nZoneHexValue = nZoneHexValue >> 1; |
| | | } |
| | | memcpy_s(StackDefect.m_sZonePixelCount, sizeof(StackDefect.m_sZonePixelCount), sZonePixelCount, sizeof(sZonePixelCount)); |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_DefectSizeType |
| | | if (strtemp == "S") |
| | | StackDefect.m_DefectSizeType = SizeType_Small; |
| | |
| | | else |
| | | StackDefect.m_DefectType = DefectType_Unknown; |
| | | |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp); // Shrink |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp); // ZoneClassNum m_sZoneClassPixelCount[i] |
| | | stringstream ConvertClass(strtemp.GetBuffer(0)); |
| | | unsigned int nClassHexValue; |
| | | short sZoneClassPixelCount[16] = { 0 }; |
| | | ConvertClass >> std::hex >> nClassHexValue; |
| | | for (int i = 0; i < 16; i++) |
| | | { |
| | | if (nClassHexValue & 1) |
| | | { |
| | | sZoneClassPixelCount[i] = 1; |
| | | } |
| | | nClassHexValue = nClassHexValue >> 1; |
| | | } |
| | | memcpy_s(StackDefect.m_sZoneClassPixelCount, sizeof(StackDefect.m_sZoneClassPixelCount), sZoneClassPixelCount, sizeof(sZoneClassPixelCount)); |
| | | |
| | | |
| | | vecStackDefect.push_back(StackDefect); |
| | | } |
| | | } |
| | |
| | | pShared->GetGlassData()->m_nRawMergeNum = m_vecStackDefect.size(); // RawMerge |
| | | pShared->GetGlassData()->m_bRawMergeRead = TRUE; |
| | | |
| | | AKLOG("Import Vector Size : %d", m_vecStackDefect.size()); |
| | | /* < KJG 20220225 - #3850 MOD Start >*/ |
| | | //AKLOG("Import Vector Size : %d", m_vecStackDefect.size()); |
| | | AKLOG("Import Vector Size : [%s]%d", pShared->GetGlassData()->m_strRawMergeStepID, m_vecStackDefect.size()); |
| | | /* < KJG 20220225 - #3850 MOD End >*/ |
| | | return TRUE; |
| | | } |
| | | |
| | |
| | | return &pBuf[nLen + 1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ |
| | | } |
| | | |
| | | BOOL CRawResultReader::readOptionFile(char* pFileName /*= "C:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/) |
| | | BOOL CRawResultReader::readOptionFile(char* pFileName /*= "D:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/) |
| | | { |
| | | if (pFileName == NULL) pFileName = m_strConfigFile; |
| | | |
| | |
| | | |
| | | pThis->m_nThreadStackFileReadFlag = 0; |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | void CRawResultReader::ProcessResultFileRead(void * pArg) |
| | | { |
| | | CRawResultReader* pThis = (CRawResultReader*)pArg; |
| | | |
| | | pThis->m_nThreadStackFileReadFlag = 1; |
| | | int nReadFailCount = 0; |
| | | int nThreadCount = 0; |
| | | CString strGlassID; |
| | | |
| | | while (pThis->m_nThreadStackFileReadFlag == 1) |
| | | { |
| | | if (pThis->m_nProcessState == RPS_CmdFileRead) //ì¤ííì¼ ì½ê¸° ìí [ê¹íí 2019/1/12] |
| | | { |
| | | strGlassID = pThis->m_strGlassID; |
| | | |
| | | pThis->m_nProcessState = RPS_StateFileRead; |
| | | nThreadCount = 0; |
| | | nReadFailCount = 0; |
| | | |
| | | AKLOG("RawMerge File Read Start : %s\\%s", pThis->m_strLocalPath, strGlassID); |
| | | Sleep(3000); |
| | | while (pThis->m_nProcessState == RPS_StateFileRead && pThis->m_nThreadStackFileReadFlag == 1) |
| | | { |
| | | if (pThis->openFile(strGlassID.GetBuffer(0)) == TRUE) |
| | | { |
| | | pThis->m_nProcessState = RPS_ResultReadOK; |
| | | AKLOG("RawMerge File Read Complete "); |
| | | break; |
| | | } |
| | | nReadFailCount++; |
| | | AKLOG("RawMerge File Read Try : %d", nReadFailCount); |
| | | if (nReadFailCount > 10) |
| | | { |
| | | pThis->m_nProcessState = RPS_ResultReadFail; |
| | | break; |
| | | } |
| | | Sleep(50); |
| | | } |
| | | if (pThis->m_nProcessState != RPS_ResultReadOK) |
| | | { |
| | | pThis->m_nProcessState = RPS_ResultReadFail; |
| | | } |
| | | } |
| | | if (nReadFailCount) |
| | | Sleep(500); |
| | | } |
| | | pThis->m_nThreadStackFileReadFlag = 0; |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | BOOL CRawResultReader::RawMergeFileReadStart(char* pGlassID) |
| | | { |
| | | if (m_nThreadStackFileReadFlag == 0) |
| | |
| | | |
| | | return TRUE; |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | BOOL CRawResultReader::ProcessRawMergeFileReadStart(char * pGlassID) |
| | | { |
| | | |
| | | if (m_nThreadStackFileReadFlag == 0) |
| | | { |
| | | ProcessResultFileRead(this); |
| | | } |
| | | if (m_nProcessState == RPS_StateFileRead) |
| | | { |
| | | m_nProcessState = RPS_CmdFileStop; |
| | | while (m_nProcessState == RPS_CmdFileStop) Sleep(0); |
| | | } |
| | | |
| | | m_strGlassID = pGlassID; |
| | | m_nProcessState = RPS_CmdFileRead; |
| | | |
| | | return TRUE; |
| | | } |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | BOOL CRawResultReader::RawMergeFileReadStop(BOOL bWait/*=TRUE*/) |
| | | { |
| | | /* |
| | |
| | | } |
| | | |
| | | BOOL RawMergeFileReadStart(char* pGlassID); |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | BOOL ProcessRawMergeFileReadStart(char* pGlassID); |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | BOOL RawMergeFileReadStop(BOOL bWait = TRUE); |
| | | BOOL IsRead() { return m_nProcessState == RPS_ResultReadOK ? TRUE : FALSE; } |
| | | |
| | |
| | | protected: |
| | | BOOL openFile(char* pGlassID); |
| | | static void threadResultFileRead(void* pArg); |
| | | |
| | | /* <LJC 20211122 : #3820 ADD Start> */ |
| | | static void ProcessResultFileRead(void* pArg); |
| | | /* <LJC 20211122 : #3820 ADD End> */ |
| | | int m_nThreadStackFileReadFlag; |
| | | |
| | | protected: |
| | |
| | | { |
| | | CString strFileName; |
| | | |
| | | CDitGlassRawClient GlassRawClient; |
| | | GlassRawClient.ConnectServer(); |
| | | CDitGlassRawClient* pShared = &GlassRawClient; |
| | | |
| | | _grmDefectData* pGrmStack; |
| | | /*< KJG 20211208 : #3696 DEL Start >*/ |
| | | //CDitGlassRawClient GlassRawClient; |
| | | //GlassRawClient.ConnectServer(); |
| | | //CDitGlassRawClient* pShared = &GlassRawClient; |
| | | // |
| | | //_grmDefectData* pGrmStack; |
| | | /*< KJG 20211208 : #3696 DEL End >*/ |
| | | |
| | | strFileName.Format("%s\\%s", m_strLocalPath, pGlassID); |
| | | |
| | |
| | | |
| | | if(pf == NULL) |
| | | return FALSE; |
| | | |
| | | /*< KJG 20211208 : #3696 ADD Start >*/ |
| | | CDitGlassRawClient GlassRawClient; |
| | | GlassRawClient.ConnectServer(); |
| | | CDitGlassRawClient* pShared = &GlassRawClient; |
| | | _grmDefectData* pGrmStack; |
| | | /*< KJG 20211208 : #3696 ADD End >*/ |
| | | |
| | | std::vector<_StackDefectCPJT> vecStackDefect; |
| | | _StackDefectCPJT StackDefect; |
| | |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "NG")) pGrmStack->m_DefectJudgement = Judge_NG; |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "TR")) pGrmStack->m_DefectJudgement = Judge_TR; |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "PR")) pGrmStack->m_DefectJudgement = Judge_PR; |
| | | /* <KYH 211129 : #3796 ADD Start> */ |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "ND")) pGrmStack->m_DefectJudgement = Judge_ND; |
| | | /* <KYH 211129 : #3796 ADD End> */ |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "PT")) pGrmStack->m_DefectJudgement = Judge_PT; |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "RV")) pGrmStack->m_DefectJudgement = Judge_Review; |
| | | else if (!strcmp(m_vecStackDefect[i].m_strDefectGrade, "RC")) pGrmStack->m_DefectJudgement = Judge_RC; |
| | |
| | | return &pBuf[nLen+1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ íí[2017/3/29] |
| | | } |
| | | |
| | | BOOL CStackResultCPJT::readOptionFile( char* pFileName /*= "C:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/ ) |
| | | BOOL CStackResultCPJT::readOptionFile( char* pFileName /*= "D:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/ ) |
| | | { |
| | | if(pFileName == NULL) pFileName = m_strConfigFile; |
| | | |
| | |
| | | #include "akCore/akFileUtil.h" |
| | | |
| | | |
| | | //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 };//2016.07.13 LHS Judge_Size ì¶ê° |
| | | //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_LN, Judge_Unknown };//2016.07.13 LHS Judge_Size ì¶ê° |
| | | |
| | | struct _StackDefectCPJT |
| | | { |
| | |
| | | return &pBuf[nLen+1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ íí[2017/3/29] |
| | | } |
| | | |
| | | BOOL CStackResultCSOT::readOptionFile( char* pFileName /*= "C:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/ ) |
| | | BOOL CStackResultCSOT::readOptionFile( char* pFileName /*= "D:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/ ) |
| | | { |
| | | if(pFileName == NULL) pFileName = m_strConfigFile; |
| | | |
| | |
| | | // st.wDay); |
| | | |
| | | sprintf(strFileName, "%s\\%02d%02d%02d\\%s_%02d%02d%02d.log", |
| | | "C:\\DIT_LogData\\", st.wYear, st.wMonth, st.wDay, |
| | | "D:\\DIT_LogData\\", st.wYear, st.wMonth, st.wDay, |
| | | "logGlassRawMessenger", st.wYear, st.wMonth, st.wDay); |
| | | |
| | | ShellExecute(NULL, "Open", "NotePad.exe", strFileName, "", SW_SHOW); |
| | |
| | | { |
| | | m_hMapBasicInfo = NULL; |
| | | m_hMapGlassData = NULL; |
| | | m_pDitGlassClient =NULL; |
| | | |
| | | m_pGlassRawInfo = NULL; |
| | | m_pGlassRawData = NULL; |
| | | |
| | | m_nLastCommandIdx = -1; |
| | | |
| | | m_pGlassData = NULL; |
| | | m_pBlockData = NULL; |
| | | m_pCellData = NULL; |
| | | m_pDefectData = NULL; |
| | | } |
| | | |
| | | CDitGlassRawClient::~CDitGlassRawClient(void) |
| | |
| | | m_pCellData = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint]; |
| | | m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint]; |
| | | m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint]; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint]; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | if(isConnect() == FALSE) return FALSE; |
| | | m_pGlassRawInfo->m_ClientProcStep = APS_GlassLoading; |
| | | m_pGlassData->m_bStackRead = FALSE; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | m_pGlassData->m_bRawMergeRead = FALSE; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | return SetCommand(grcSequenceGlassLoading); |
| | | } |
| | | |
| | |
| | | return SetCommand(grcSequenceCustomReviewDataRead); |
| | | } |
| | | |
| | | CDitGlassRawClient* CDitGlassRawClient::GetInstance() |
| | | { |
| | | if(m_pDitGlassClient == NULL) |
| | | { |
| | | m_pDitGlassClient = new CDitGlassRawClient; |
| | | } |
| | | |
| | | return m_pDitGlassClient; |
| | | } |
| | | |
| | | void CDitGlassRawClient::RemoveReviewDefects() |
| | | { |
| | | int nDefectNum = m_pGlassData->m_nDefectNum; |
| | |
| | | |
| | | m_pGlassData->m_nDefectNum = nDefectNum-nDefectDeleteNum; |
| | | } |
| | | |
| | | CDitGlassRawClient* CDitGlassRawClient::m_pDitGlassClient; |
| | |
| | | #pragma once |
| | | |
| | | #include "DitGlassRawStruct.h" |
| | | #include <afxmt.h> |
| | | |
| | | class CDitGlassRawClient |
| | | { |
| | |
| | | ~CDitGlassRawClient(void); |
| | | |
| | | public: |
| | | static CDitGlassRawClient* GetInstance(); //cmark |
| | | |
| | | BOOL ConnectServer(); |
| | | BOOL isConnect(){return m_hMapBasicInfo == NULL || m_hMapGlassData == NULL ? FALSE : TRUE;}; |
| | | |
| | |
| | | _grmCellData* GetCellData(int nIndex){return &m_pCellData[nIndex];}; |
| | | _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; |
| | | _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex];}; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | _grmDefectData* GetRawMergeData(int nIndex) { return &m_pRawMergeData[nIndex]; }; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | |
| | | //ê²°ê³¼ íì¼ ê°ì ì°ê¸° ëª
ë ¹ [ê¹íí 2018/11/12] |
| | | BOOL WriteAOIRawFile(); |
| | |
| | | BOOL ConnectGlassRawInfo(); |
| | | BOOL ConnectGlassRawData(); |
| | | BOOL SetCommand(emGlassRawCommand nCmd); |
| | | static CDitGlassRawClient* m_pDitGlassClient; //cmark |
| | | |
| | | protected: |
| | | _grmGlassData* m_pGlassData; |
| | | _grmBlockData* m_pBlockData; |
| | | _grmCellData* m_pCellData; |
| | | _grmDefectData* m_pDefectData; |
| | | _grmDefectData* m_pStackData; |
| | | /*< KJG 20211024 - #3487 ADD Start >*/ |
| | | _grmDefectData* m_pRawMergeData; |
| | | /*< KJG 20211024 - #3487 ADD End >*/ |
| | | protected: |
| | | HANDLE m_hMapBasicInfo; |
| | | HANDLE m_hMapGlassData; |