#pragma once #include "GlassRawBase.h" #include "GlassRawRTMS.h" #include "StackResultCPJT.h" #include "AnaResultFile.h" #include "MacroResultFile.h" #include "CustomizeReview.h" #include "InterfaceFTP.h" class CGlassRawCPJT : public CGlassRawBase, public CInterfaceFTP { public: enum emDefectMemberType { DMT_DefectJudge = 0, DMT_DefectSizeType }; public: CGlassRawCPJT(void); ~CGlassRawCPJT(void); static char* GetClassName(){return "C-PJT";}; virtual BOOL SequenceGlassLoading(CgrmGlassRawData* pData); virtual BOOL SequenceInspectEnd(CgrmGlassRawData* pData); virtual BOOL SequenceReviewStart(CgrmGlassRawData* pData); virtual BOOL SequenceReviewEnd(CgrmGlassRawData* pData); virtual BOOL WriteAOIFile(CgrmGlassRawData* pData); virtual BOOL ReadAOIFile(CgrmGlassRawData* pData){return TRUE;}; virtual BOOL SequenceFtpUpload(char* pRawFileName); virtual void NotifyUpdateOptionInfo(){/*m_StackResult.readOptionFile();*/}; protected: virtual void SendMessageFTPUploadRaw(_grmGlassData* pGlassData); virtual void SendMessageFTPDownloadStack(_grmGlassData* pGlassData); virtual void SendMessageFTPUploadImage(_grmGlassData* pGlassData, emFTPCommand sort); virtual BOOL SendMessageFTPUploadIndexFile(_grmGlassData* pGlassData); virtual void SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData); virtual void GetFormatDescription(emFTPCommand sort, char* pServerPath, char* pServerFile, char* pLocalPath, char* pLocalFile, char* pRTMSFile,char* pServerFileSubPath, char* pServerFileSubName,_grmGlassData* pGlassData); BOOL ReadMuraFile(CgrmGlassRawData* pData); BOOL MakeAOIFile(CgrmGlassRawData* pData); void SetRawFilePath(CString strPath) { m_strRawFilePath = strPath; } CString GetRawFilePath() { return m_strRawFilePath; } void makeDataHeader(CString& strLine, _grmGlassData* pGlassData); void makeDataGlass(CString& strLine, _grmGlassData* pGlassData); void makeDataCell(CString& strLine, CgrmGlassRawData* pData, _grmCellData* pCellData); BOOL makeDataDefect(CString& strLine, CgrmGlassRawData* pData, _grmDefectData* pDefectData); CString GetDefectInfoToString(emDefectMemberType nDefectInfoType, int nParam); public: void SetEquipType(int nType){m_nEquipType = nType;}; CString GetWsiDefectType(int nType); protected: protected: int m_nEquipType; // 0:Inline, 1:Offline CString m_strRawFilePath; CAnaResultFile m_GlassRawAna; //µðÆåºÐ¼®¿ë°á°úÆÄÀÏ [±èÅÂÇö2020/9/15] CGlassRawRTMS m_GlassRawRTMS;//RTMS¿ë °á°úÆÄÀÏ »ý¼º°ü¸® [±èÅÂÇö 2018/12/5] CMacroResultFile m_MuraResultFile; //¹«¶ó¿ë °á°úÆÄÀÏ »ý¼º°ü¸® [±èÅÂÇö 2018/12/5] CStackResultCPJT m_StackResult; BOOL m_bReviewEndCheck; // InspectEnd ½Ã¿¡ Raw_im Æú´õ¿¡ SubFile »ý¼º ¾ÈÇϱâ À§ÇØ »ç¿ë [ 21-03-18 KJG ] CTime m_tmReviewStart; CTime m_tmReviewEnd; int m_nWriteRawDefectIdx; }; struct stCellData { int iModel; int ixCell, iyCell; void SetIndex(int im, int ix, int iy) { iModel = im; ixCell = ix; iyCell = iy; } BOOL AddDefect(_grmDefectData* pDefect) { if (iModel == pDefect->m_nModelIdx)// edge crackÀº Æ÷ÇԾȵǰÔ.. ¸ðµ¨ÀÌ ÆÐÅϺÎÀÎÁö È®ÀÎÀÛ¾÷ ÁÙÀ̱â. { m_Defects.push_back(pDefect); return TRUE; } return FALSE; } _grmDefectData* GetDefect(int i) { return m_Defects[i]; } int GetDefectCount() { return (int)m_Defects.size(); } std::vector<_grmDefectData*> m_Defects; }; struct stCellStorage { stCellData *m_pCells; int m_nCell; stCellStorage(int n) { m_nCell = n; m_pCells = new stCellData[n]; } ~stCellStorage() { delete[] m_pCells; } stCellData* GetCellData(int iCell) { return m_pCells + iCell; } BOOL AddDefect(_grmDefectData *pDefect) { if (pDefect->m_nCellIdx < 0) { return FALSE; } return GetCellData(pDefect->m_nCellIdx)->AddDefect(pDefect); } int GetCellCount() { return m_nCell; } };