From 1fd49a571338b6c946bb05dcdf59ec1468df5c50 Mon Sep 17 00:00:00 2001 From: SWK <sungwk82@diteam.co.kr> Date: 목, 22 12월 2022 12:31:43 +0900 Subject: [PATCH] ongoing50 #4403 CF AOI Reveiw TACT 지연 개선 1. 일정 시간 유지 신호 처리 시 동기화로 인한 불합리 개선 - 일정 시간 유지 필요 시 스래드풀 작업큐를 이용하여 루프처리 방식으로 변경 - 유지 신호 처리 중 출력 신호 발생 시 작업큐에 등록하여 유지 신호와 결합하여 출력 처리 2. FDC 보고 항목 중 SW 버전 체크 루프 불합리 개선 - 프로그램 시작 시 연동 프로그램 버전 체크 간 실행되지 않는 프로그램이 있는 경우 무한 루프 발생 - 무한 루프로 인한 CPU 점유 상승->루프 중간 Sleep추가 및 코드 간소화 3. 로그 메시지에 시간 ms단위 추가(황만수SM 작업 내역 병합) --- ReviewHistory/ReveiwHistory/GlassRawCPJT.h | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) diff --git a/ReviewHistory/ReveiwHistory/GlassRawCPJT.h b/ReviewHistory/ReveiwHistory/GlassRawCPJT.h new file mode 100644 index 0000000..88b6901 --- /dev/null +++ b/ReviewHistory/ReveiwHistory/GlassRawCPJT.h @@ -0,0 +1,134 @@ +#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; } +}; \ No newline at end of file -- Gitblit v1.9.3