Jack.Peng
2021-04-20 1c60d225cc7c1ccf17c3d1e6a84ca0d959550cf3
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
using System;
using System.Diagnostics;
 
namespace Bro.Common.Link
{
    /// <summary>
    /// 设备的连接基类
    /// </summary>
    public abstract class LinkBase
    {
        // 默认保存数据缓存长度
        public const int        DFT_BUFF_LEN    = 4096;
 
        // 连接对象接收缓存大小
        public const int        DFT_SEND_BUFF_LEN   = 4096;
        // 连接对象发送缓存大小
        public const int        DFT_RECV_BUFF_LEN   = 4096;
 
        // 连接描述
        public string   Desp { get;set;}
        // 初始化状态
        public bool     IsInit { get;set; }
        // 连接状态
        public bool     IsConn { get;set;}
        // 接收缓存长度
        public int      BufferLen { get;set;}
        // 接收缓存大小
        public int      SendBuffLen { get;set;}
        // 发送缓存大小
        public int      RecvBuffLen { get;set;}
 
        // 接收缓存
        protected byte[] rcvBuf = null;
 
        // 连接状态
        public LinkBase()
        {
            Desp        = this.GetType().Name;
            IsInit      = false;
            IsConn      = false;
            SendBuffLen = DFT_SEND_BUFF_LEN;
            RecvBuffLen = DFT_RECV_BUFF_LEN;
            BufferLen   = DFT_BUFF_LEN;
 
        }
 
        /// <summary>
        /// 连接初始化
        /// </summary>
        /// <returns></returns>
        public virtual bool Init()
        {
            if ( IsInit )
            {
                return true;
            }
 
            try
            {
                rcvBuf = new byte[BufferLen];
 
                return true;
            }
            catch(Exception ex)
            {
                Trace.TraceError("Link:{0} Init fail, ex:{1}-{2}", this.Desp, ex.Message, ex.StackTrace);
            }
 
            return false;
        }
 
        /// <summary>
        /// 打开连接
        /// </summary>
        /// <returns></returns>
        public abstract bool Open();
 
        /// <summary>
        /// 关闭连接
        /// </summary>
        public abstract void Close();
 
        /// <summary>
        /// 销毁
        /// </summary>
        public abstract void Fnit();
 
        /// <summary>
        /// 接收数据
        /// </summary>
        /// <param name="rcvBuf"></param>
        /// <param name="offset"></param>
        /// <returns></returns>
        public abstract int Recv(byte[] rcvBuf, int offset);
 
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="sndBuf"></param>
        /// <returns></returns>
        public abstract bool Send(byte[] sndBuf, int offset, int len);
 
    }
 
 
}