#pragma once #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include #include "TimerThreadPool.h" class CGlass_Data; enum CHECKSEQ_MESSAGE_SECTION {CHECKSEQ_SHORT_SCANSTART_OVERTIME=0,CHECKSEQ_SHORT_SCANSTART_COMPLETE,CHECKSEQ_LONG_SCANSTART_OVERTIME,CHECKSEQ_LONG_SCANSTART_COMPLETE,CHECKSEQ_ONESCAN_OVERTIME,CHECKSEQ_ONESCAN_COMPLETE ,CHECKSEQ_GLASS_INSPECTION_OVERTIME,CHECKSEQ_GLASS_INSPECTION_COMPLETE,CHECKSEQ_UNKNOWN}; class CCheckSeqMessage { public: CCheckSeqMessage(){Reset();} virtual ~CCheckSeqMessage(){;} void Reset() { iScan = 0; dwTickStart = dwTickEnd = dwDuration = dwCheckTime = 0; emCheckSeq = CHECKSEQ_UNKNOWN; bDelete = FALSE; } void SetCheck(CHECKSEQ_MESSAGE_SECTION emCheck,DWORD dwChkTime,int ScanIdx) { Reset(); dwCheckTime = dwChkTime; emCheckSeq = emCheck; dwTickStart = GetTickCount(); iScan = ScanIdx; bDelete = FALSE; } DWORD dwTickStart; DWORD dwTickEnd; DWORD dwCheckTime; DWORD dwDuration; int iScan; BOOL bDelete; CHECKSEQ_MESSAGE_SECTION emCheckSeq; }; interface ICheckSequenceInterface2Parent { virtual void CheckSeqMSG_Received(CCheckSeqMessage *pCheckSeq) = 0; }; ///////////////////////////////////////////////////////////////////////////// // CThread_CheckSequence thread #define PAD_RECIPE_NAME_CNT 200 class CThread_CheckSequence : public CTimerThreadPool { public: CThread_CheckSequence(DWORD dwPeriod=11); // protected constructor used by dynamic creation virtual ~CThread_CheckSequence(); // Operations public: BOOL CreateThread(); void SetC2M(ICheckSequenceInterface2Parent *pC2M,CGlass_Data *pGlassData){m_pC2M=pC2M,m_pGlassData = pGlassData;} //void SetC2M(ICheckSequenceInterface2Parent *pC2M){m_pC2M=pC2M;} void ClearMessage(); virtual void TimerThreadProcess(PVOID pParameter); std::vector *GetVecCheckSeqMSG(){return &m_VecCheckSeqMSG;} int AddCheckSeqMSG(CHECKSEQ_MESSAGE_SECTION emSection,DWORD dwChkTime,int iScan); protected: CCriticalSection m_csCheckMSG; ICheckSequenceInterface2Parent *m_pC2M; std::vector m_VecCheckSeqMSG; CGlass_Data *m_pGlassData; }; /////////////////////////////////////////////////////////////////////////////