mrDarker
2025-07-16 1dbe46cd9d0f181d08d5a69f72d8548628a13b9d
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
80
#pragma once
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
#include <vector>
#include "TimerThreadPool.h"
 
enum SEND_MESSAGE_SECTION    {SEND_MESSAGE_ALL=0,SEND_MESSAGE_CONTROLSIGNAL,SEND_MESSAGE_ALARM,SEND_MESSAGE_REVIEWSIGNAL,SEND_MESSAGE_UNKNOWN};
 
class CPostSendMessage
{
public:
    CPostSendMessage(){Reset();}
    virtual ~CPostSendMessage(){;}
    void        Reset()
    {
        nSignal = nValue = -1;
        emSection = SEND_MESSAGE_UNKNOWN;
    }
 
    SEND_MESSAGE_SECTION emSection;    
    int nSignal;    
    int nValue;
}; 
 
class CDisableSendMessage : public CPostSendMessage
{
public:
    CDisableSendMessage(){Reset();}
    virtual ~CDisableSendMessage(){;}
    void        Reset()
    {
        CPostSendMessage::Reset();
        dwOntime = dwStart = 0;
    }
 
    DWORD        dwOntime;
    DWORD        dwStart;
}; 
 
 
interface IPLCSendInterface2Parent
{
    virtual void        SendMSG_Received(CPostSendMessage *pSendMSG) = 0;                
};
 
/////////////////////////////////////////////////////////////////////////////
// CThread_SendMSG thread
 
#define        PAD_RECIPE_NAME_CNT            200
class CThread_SendMSG : public CTimerThreadPool
{
public:
    CThread_SendMSG(DWORD dwPeriod=15);           // protected constructor used by dynamic creation
    virtual ~CThread_SendMSG();
        
public:    
    BOOL        CreateThread();    
    void        SetIN2P(IPLCSendInterface2Parent *pN2M){m_pS2M=pN2M;}
 
    std::vector<CPostSendMessage>    *GetVecSendMSG(){return &m_VecSendMSG;}    
    int            AddSendMSG(SEND_MESSAGE_SECTION emSection,int nSignal, int nValue);        
 
    std::vector<CDisableSendMessage>    *GetVecDisableMSG(){return &m_VecDisableMSG;}    
    int            AddDisableMSG(SEND_MESSAGE_SECTION emSection,int nSignal, int nValue, DWORD dwOntime);        
 
    BOOL        ClearMSG();        
 
    virtual    void TimerThreadProcess(PVOID pParameter);
 
protected:
    CCriticalSection        m_csNetMSG;    
    CCriticalSection        m_csDisableMSG;
    IPLCSendInterface2Parent        *m_pS2M;
    std::vector<CPostSendMessage> m_VecSendMSG;    
    std::vector<CDisableSendMessage> m_VecDisableMSG;    
    
};