chenluhua1980
9 天以前 6c92ade0aeb6a505f2ab8108dcbdab20e37a9fac
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
#pragma once
#include <string>
#include <functional>
 
 
#define TIMEOUT        -99
 
class IMcChannel;
typedef std::function<void(IMcChannel*)> ONCLOSE;
typedef std::function<void(IMcChannel*)> ONCLOSING;
typedef std::function<void(IMcChannel*, int nErrorCode)> ONCONNECTED;
typedef std::function<void(IMcChannel*, char *pData, unsigned int nDataSize, int nDecodeRet)> ONREADRAWDATA;
typedef std::function<void(IMcChannel*)> ONWRITERAWDATA;
typedef std::function<void(IMcChannel*, int addr, DWORD value, int flag)> ONREAD;
typedef std::function<void(IMcChannel*, int addr, char *pData, unsigned int nDataSize, int flag)> ONREADDATA;
typedef std::function<void(IMcChannel*, int addr, DWORD value, int flag)> ONWRITE;
 
typedef struct _McChannelListener
{
    ONCLOSE                funOnClose;
    ONCLOSING            funOnClosing;
    ONCONNECTED            funOnConnected;
    ONREADRAWDATA        funOnRead;
    ONWRITERAWDATA        funOnWrite;
} McChannelListener;
 
namespace MC {
#define LERROR        4
#define LWARN        3
#define LINFO        2
#define LDEBUG        1
 
    /** @brief ÃüÁî*/
    typedef enum CMD
    {
        /** @brief ³ÉÅú¶Á */
        BATCH_READ = 0x0401,
 
        /** @brief ³ÉÅúд */
        BATCH_WRITE = 0x1401,
 
        /** @brief Ëæ»ú¶Á */
        RANDOM_READ = 0x0403,
 
        /** @brief ²âÊÔ(Ëæ»úд) */
        TEST_RANDOM_WRITE = 0x0402,
 
        /** @brief ¼àÊÓ×¢²áÊý¾Ý */
        MONITOR_REGISTER_DATA = 0x0801,
 
        /** @brief ¼àÊÓ */
        MONITOR = 0x0802,
 
    } CMD;
 
 
    /** @brief ×ÓÃüÁî*/
    typedef enum SUBCMD
    {
        /** @brief °´×Ö */
        SC_WORD = 0x0000,
 
        /** @brief °´Î» */
        SC_BIT = 0x0001,
 
    } SUBCMD;
 
 
    /** @brief ÈíÔª¼þÀàÐÍ*/
    typedef enum SOFT_COMPONENT
    {
        /** @brief ÄÚ²¿¼ÌµçÆ÷(M*) */
        M = 0x90,
 
        /** @brief Êý¾Ý¼Ä´æÆ÷(D*) */
        D = 0xa8,
 
        /** @brief Á´½Ó¼Ä´æÆ÷(W*) */
        W = 0xb4,
 
        /** @brief ÊäÈë(X*) */
        X = 0x9c,
 
        /** @brief Êä³ö(Y*) */
        Y = 0x9d,
 
        /** @brief Ëø´æ¼ÌµçÆ÷(L*) */
        L = 0x92,
 
        /** @brief ²½½ø¼ÌµçÆ÷(S*) */
        S = 0x98,
 
        /** @brief Á´½Ó¼ÌµçÆ÷(B*) */
        B = 0xA0,
 
        /** @brief ±¨¾¯Æ÷(F*) */
        F = 0x93,
 
        /** @brief Îļþ¼Ä´æÆ÷(ZR*) */
        ZR = 0xB0,
 
    } SOFT_COMPONENT;
}
 
class IMcChannel
{
public:
    virtual void setChannelListener(McChannelListener *pListener) = 0;
    virtual void setActionInterval(int millisecond) = 0;
    virtual std::string &getName() = 0;
    virtual std::string &getIp() = 0;
    virtual unsigned int getServerPort() = 0;
    virtual unsigned int getLocalPort() = 0;
    virtual bool isConnected() = 0;
    virtual int connect() = 0;
    virtual int close() = 0;
    virtual int sendRawData(char *pData, int nDataSize) = 0;
    virtual int readData(MC::SOFT_COMPONENT softComponent, unsigned int addr, unsigned int nReadLen, ONREADDATA funOnReadData) = 0;
    virtual int readData2(MC::SOFT_COMPONENT softComponent, unsigned int addr, unsigned int nReadLen, int executeTime, ONREADDATA funOnReadData) = 0;
    virtual int readDWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
    virtual int readWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
    virtual int readWordIfIdle(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
    virtual int readBit(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
    virtual int writeData(MC::SOFT_COMPONENT softComponent, unsigned int addr, const char* pData, unsigned int nDataLen, ONWRITE funOnWrite) = 0;
    virtual int writeWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, WORD value, ONWRITE funOnWrite) = 0;
    virtual int writeDWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, DWORD value, ONWRITE funOnWrite) = 0;
    virtual int writeBit(MC::SOFT_COMPONENT softComponent, unsigned int addr, BOOL value, ONWRITE funOnWrite) = 0;
    virtual int writeBit2(MC::SOFT_COMPONENT softComponent, unsigned int addr, BOOL value, int executeTime, ONWRITE funOnWrite) = 0;
    virtual int writeBitIfIdle(MC::SOFT_COMPONENT softComponent, unsigned int addr, BOOL value, ONWRITE funOnWrite) = 0;
};