LWQ
2025-08-07 c049c2fdf2f5722e460d0dc5c7597bf819f2e2e5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#pragma once
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
#include <vector>
#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<CCheckSeqMessage>    *GetVecCheckSeqMSG(){return &m_VecCheckSeqMSG;}    
    int            AddCheckSeqMSG(CHECKSEQ_MESSAGE_SECTION emSection,DWORD dwChkTime,int iScan);    
        
protected:
    CCriticalSection        m_csCheckMSG;    
    ICheckSequenceInterface2Parent        *m_pC2M;
    std::vector<CCheckSeqMessage> m_VecCheckSeqMSG;
    CGlass_Data                *m_pGlassData;    
};
 
/////////////////////////////////////////////////////////////////////////////