#pragma once #include "ReviewProcessor.h" #include "CHEdgeTriangle/EdgeTriangle.h" #include "LineChecker/LineChecker.h" #define ErrorCount 20 enum CSOT_OFF_PROCESS_STATUS {CSOT_OFF_REVIEW_SUCCESS = 0, CSOT_OFF_USER_SUCCESS, CSOT_OFF_MEASURE_SUCCESS, CSOT_OFF_WSI_SUCCESS,CSOT_OFF_REFLOW_SUCCESS}; //kmj class CReviewProcessor_CSOT_OFF : public CReviewProcessor { public: CReviewProcessor_CSOT_OFF(int nThreadCount=1); virtual ~CReviewProcessor_CSOT_OFF(void); virtual void AddWsiResultData(int nModuleIndex, const SWsiResult& measureResut); virtual void AddWsiReflowResultData(int nModuleIndex, const SWsiResult& measureResut); virtual void AddCameraImageData(int nModuleIndex, int nResultIndex, VectorImageData& vectorImageData); virtual int AddReviewProcessData(SReviewResult* pReviewResult); virtual int PostProcessReviewResult(int nThreadIdx, SReviewResult* pReviewResult); virtual int PostProcessUserResult(int nThreadIdx, SReviewResult* pReviewResult); virtual int PostProcessWsiResult(int nThreadIdx, SReviewResult* pReviewResult); virtual int PostProcessMeasureResult(int nThreadIdx, SReviewResult* pReviewResult); virtual int PostProcessReflowResult(int nThreadIdx, SReviewResult* pReviewResult); virtual int PostProcessWsiReflowResult(int nThreadIdx, SReviewResult* pReviewResult); // Checking Process Success kmj BOOL CheckProcessSuccess(CRsRcpReviewInfo* pRsRcpReviewInfo); void ProcessSuccessReset(); protected: virtual void WorkThreadProcess(PVOID pParameter); int CheckMotionComplete(); private: int ProcessReview(int nThreadIdx, SReviewResult* pReviewResult); int ProcessMeasure(int nThreadIdx, SReviewResult* pReviewResult); int ProcessWSI(int nThreadIdx, SReviewResult* pReviewResult); int ProcessUser(int nThreadIdx, SReviewResult* pReviewResult); int ProcessReflow(int nThreadIdx, SReviewResult* pReviewResult); int ProcessWSIReflow(int nThreadIdx, SReviewResult* pReviewResult); // ProcessReview BOOL MakeReviewImageFileName(SReviewResult* pReviewResult); void LoadAoiImage(const CString& strGlassID, int nOpticType, int nPosX, int nPosY, CCHImageData* pAoiDark, CCHImageData *pAoiBright); void FindAoiDefectImagePath(const CString& strGlassID, int nOpticType, int nPosX, int nPosY, CString& strDarkPath, CString& strBrightPath); void FindDefectPos(int nThreadIdx, CCHImageData* pImageData, const SReviewDefectFindParam& findParam, SReviewDefectFindResult& findResult, SReviewResult* pReviewResult); BOOL MakeUploadImage(CCHImageData *pUploadImage, CCHImageData *pReviewCam, CCHImageData *pAoiDark, CCHImageData *pAoiBright, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult); void MakeAoiImage(CCHImageData *pAoiDark, CCHImageData* pAoiBright, CCHImageData* pAoiDark1, CCHImageData* pAoiBright1, CCHImageData* pAoiDark2, CCHImageData* pAoiBright2, int& nMaxWidth, int& nMaxHeight); void DrawAoiImage(CDC *pDC, CCHImageData *pAoiDark1, CCHImageData* pAoiBright1, CCHImageData *pAoiDark2, CCHImageData* pAoiBright2, int nWidth, int nHeight); void DrawDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult); void DrawDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult, CCHImageData* pAoiBright, CCHImageData* pAoiDark);// 20170720 smok. bright, dark image is exist // User Defect Á¤º¸ Ãß°¡ [2017.6.22 bhs] //void DrawUserDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult, ReviewType rType); void DrawUserDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult, CCHImageData* pAoiBright, CCHImageData* pAoiDark);// 20170720 smok. bright, dark image is exist void DrawUserDefectInfo(CDC *pDC, const SReviewDefectFindResult& findResult, const SReviewResult* pReviewResult); void FindCDDefectIdx(SReviewResult* pReviewResult); void FindSDDefectIdx(SReviewResult* pReviewResult); void FindInspectionDefectImage(int nUMOriginX, int nUMOriginY, const CString& strGlassID, CString& strInspectionDefectImagePath); void FindInspectionDefectImage(int nUMOriginX, int nUMOriginY, const CString& strGlassID, int nOpticType, CString& strDarkPath, CString& strBrightPath); // ProcessMeasure BOOL MakeMeasureImageFileName(SReviewResult* pReviewResult); BOOL MakeUploadMeasureImage(CCHImageData *pUploadImage, CCHImageData *pReviewCam, const SReviewResult* pReviewResult, CResultTriangle * pResultTriangle, int nMeasureResult); //Modify by JuneKi 2016-02-29 // ProcessUser BOOL MakeUserImageFileName(SReviewResult* pReviewResult); // ProcessReflow BOOL MakeReflowImageFileName(SReviewResult* pReviewResult); // Checking Process Success BOOL bProcessSuccess[3]; //kmj private: CRITICAL_SECTION m_csUserCriticalSection; CRITICAL_SECTION m_csMeasureRcpfileCriticalSection; CRITICAL_SECTION m_csMeasureRcpimageCriticalSection; CRITICAL_SECTION m_csMeasureMeasureResult; CMotorControlInfo* m_MotorControlInfo; protected: CString ErrorStringCode[ErrorCount]; };