jace.tang
2022-06-13 ab94f070d797edbe927d7d58a460cc4eddf48b03
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
139
140
141
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
 
 
 
namespace M423project
{
    /// <summary>
    /// 所有设备的基类
    /// </summary>
    public class DevBase
    {
        #region 枚举
        /// <summary>
        /// 设备状态定义
        /// </summary>
        public enum DevStat
        {
            DSUninit = 0,       // 未初始化
            DSInit,             // 已初始化
            DSOpen,             // 已打开
            DSClose,            // 已关闭
            DSExcept            // 异常状态
        }
 
        /// <summary>
        /// 设备动作定义
        /// </summary>
        public enum DevAction
        {
            DAIdle = 0,         // 空闲状态
            DASnaping,          // 抓拍中
            DAScanning,         // 扫描中
            DAMoving,           // 移动中
 
            // TODO:根据不同设备可继续添加
        }
 
        #endregion
 
        #region 常量定义
 
        #endregion
 
        #region 设备基本属性
 
        // 设备描述
        public string Desp { get; set; }
        // 设备状态
        public DevStat Stat { get; set; }
        // 设备是否初始化
        public bool IsInit
        {
            get { return DevStat.DSInit == this.Stat; }
        }
        // 设备是否打开
        public bool IsOpen
        {
            get { return DevStat.DSOpen == this.Stat; }
        }
        // 设备ID(可用来唯一指定本设备)
        public int DevId { get; set; }
        // 设备异常描述
        public string ExceptionDesp { get; set; }
        // 设备携带数据
        public object Data { get; set; }
 
        // 默认的设备ID起始值
        private static int DevIdBase { get; set; }
 
        private static object DevIdBaseLocker = new object();
 
        #endregion
 
        /// <summary>
        /// 设备构造函数
        /// 
        /// 使用了默认的设备id
        /// </summary>
        public DevBase()
        {
            // 默认设备描述
            Desp = this.GetType().Name;
 
            Stat = DevStat.DSUninit;
 
            lock (DevIdBaseLocker)
            {
                DevIdBase++;
            }
 
            this.DevId = DevIdBase;
        }
 
        #region 基本动作
        /// <summary>
        /// 设备初始化
        /// </summary>
        /// <returns></returns>
        public virtual bool Init()
        {
            Stat = DevStat.DSInit;
 
            return true;
        }
 
        /// <summary>
        /// 设备销毁
        /// </summary>
        public virtual void Fnit()
        {
            Stat = DevStat.DSUninit;
        }
 
        /// <summary>
        /// 设备打开
        /// </summary>
        /// <returns></returns>
        public virtual bool Open()
        {
            Stat = DevStat.DSOpen;
 
            return true;
        }
 
        /// <summary>
        /// 设备关闭
        /// </summary>
        public virtual void Close()
        {
            Stat = DevStat.DSClose;
        }
 
        #endregion
 
    }
 
}