chenluhua1980
7 天以前 d400f022161ff47f02cd0ea95a5076d0187ecd4d
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#pragma once
#include <string>
#include <vector>
#include <map>
#include <set>
#include "CCollectionEvent.h"
#include "ProcessJob.h"
 
 
#define SVID_ControlState           600
#define SVID_CurrentProcessState    700
#define SVID_CJobSpace            5001
#define SVID_PJobSpace                5002
#define SVID_PJobQueued                5003
#define SVID_EQPPExecName           801
#define SVID_Bonder1CurrentRecipe   8100
#define SVID_Bonder2CurrentRecipe   8101
#define SVID_VacuumBakeCurrentRecipe 8102
#define SVID_BakeCoolingCurrentRecipe 8103
#define SVID_MeasurementCurrentRecipe 8104
#define SVID_EFEMCurrentRecipe      8105
 
 
typedef std::function<void(void* pFrom, ACTIVESTATE state)> STATECHANGED;
typedef struct _ACTIVEListener
{
    STATECHANGED            onStateChanged;
} ACTIVEListener;
 
class CHsmsActive
{
public:
    CHsmsActive();
    ~CHsmsActive();
 
public:
    void setListener(ACTIVEListener listener);
    int init(const char* pszIp, int port);
    int term();
 
public:
    // Select
    int hsmsSelectRequest();
 
    // Deselect Request
    int hsmsDeselectRequest();
 
    // 建立通讯(S1F13)
    int hsmsEstablishCommunications();
 
    // Are You There
    int hsmsAreYouThere();
 
    // ControlState: Request Online/Offline (S1F17 / S1F15)
    int hsmsRequestOnline();
    int hsmsRequestOffline();
 
    // ControlState: GoLocal/GoRemote (S2F41)
    int hsmsGoLocal();
    int hsmsGoRemote();
 
    // Date time sync
    int hsmsDatetimeSync();
 
    // terminal display
    int hsmsTerminalDisplay(BYTE tid, const char* pszText);
 
    // Enable/Disable Event Report
    int hsmsEDEventReport(bool bEnable, std::vector<int>& ids);
 
    // Enable/Disable Alarm Report
    int hsmsEDAlarmReport(bool bEnable, unsigned int id);
 
    // Define reports
    int hsmsDefineReports(std::map<unsigned int, std::vector<unsigned int>>& mapReport);
    
    // Line Event Report
    int hsmsLinkEventReport(std::map<unsigned int, std::vector<unsigned int>>& mapEvent);
 
    // Configure Spooling
    int hsmsConfigureSpooling(std::map<unsigned int, std::set<unsigned int>>& spoolingConfig);
 
    // 发送或清空缓存的消息
    int hsmsTransmitSpooledData();
    int hsmsPurgeSpooledData();
 
    // 查询变量
    int hsmsSelectedEquipmentStatusRequest(unsigned int SVID);
    int hsmsQueryAllStatusVariables();      // S1F11
    int hsmsQueryAllDataVariables();        // S1F21
    int hsmsQueryAllCollectionEvents();     // S1F23
    int hsmsEquipmentConstantRequest(const std::vector<unsigned short>& ecids); // S2F13
    int hsmsEquipmentConstantSend(const std::vector<std::pair<unsigned short, std::string>>& ecidValues); // S2F15
 
    // 查询PPID List
    int hsmsQueryPPIDList();
    int hsmsDeletePPID(const std::vector<std::string>& ppids); // S7F17
    int hsmsProcessProgramRequest(const char* pszPPID); // S7F5
 
    // S3F17
    // 卡匣动作请求
    int hsmsCarrierActionRequest(unsigned int DATAID, 
        const char* pszCarrierAction,
        const char* pszCarrierId,
        unsigned char PTN);
    int hsmsProceedWithCarrier(unsigned int DATAID,
        const char* pszCarrierId,
        unsigned char PTN);
    int hsmsProceedWithSlotMap(unsigned int DATAID,
        const char* pszCarrierId,
        unsigned char PTN,
        const char* pszLotId,
        const std::vector<std::string>& panelIds,
        const std::vector<unsigned char>& slotMap);
    int hsmsCarrierRelease(unsigned int DATAID,
        const char* pszCarrierId,
        unsigned char PTN);
 
    // S16F15
    int hsmsPRJobMultiCreate(std::vector<SERVO::CProcessJob*>& pjs);
 
    // S14F9
    int hsmsCreateControlJob(const char* pszControlJobId, std::vector<std::string>& processJobIds);
 
    // 通过的reply函数
    void replyAck(int s, int f, unsigned int systemBytes, BYTE ack, const char* pszAckName);
 
    // reply ack0
    int replyAck0(IMessage* pMessage);
 
private:
    ACTIVEListener m_listener;
    IActive* m_pActive;
    std::string m_strIp;
    int m_nPort;
    unsigned short m_nSessionId;
    unsigned int m_nSystemByte;
};