wxr
2020-01-18 4cc04639fbadde3a7f3b9875353df0d90fc09043
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
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
 
namespace HDL_ON.Entity
{
    public class Function
    {
        /*
        HDL统一协议格式:16bytes
        厂商代号:2bytes
        通讯方式:有线/无线/ZIGBEE等1bytes
        产品识别码:以添加设备的年月日时分秒 + 随机数8bytes
        功能类别:1bytes
        数据表索引地址:2bytes
        回路:2bytes
        举例: 0001-00-201910120900002567-01-0001-0001
        */
 
        public Function()
        {
        }
        /// <summary>
        /// 当前设备类型
        /// </summary>
        public FunctionType funcType = FunctionType.UnKown;
        /// <summary>
        /// 功能分类
        /// </summary>
        public string funcClassification;
        /// <summary>
        /// 是否收藏
        /// </summary>
        public bool collection = false;
        /// <summary>
        /// 功能ID
        /// </summary>
        public string sid;
        /// <summary>
        /// 备注
        /// </summary>
        public string name;
        /// <summary>
        /// 保存数据时的文件名
        /// </summary>
        public string savePath = "";
        /// <summary>
        /// A协议数据格式
        /// </summary>
        public string a_Protocol_Namespace = "HDL";
        /// <summary>
        /// bus协议数据格式
        /// </summary>
        public string bus_Data;
        /// <summary>
        /// 房间ID列表
        /// 该功能添加到到房间列表
        /// </summary>
        public List<string> roomIdList = new List<string>();
        /// <summary>
        /// 最后控制的一次状态
        /// </summary>
        public string lastState = "";
 
 
 
 
        /// <summary>
        /// 获取A协议控制字符串
        /// </summary>
        /// <param name="command">控制命令:write,read</param>
        /// <returns></returns>
        public virtual JObject GetSendJObject(string command)
        {
            var sendJob = new JObject { { "Namespace", a_Protocol_Namespace }, { "Command", command }, { "Type", "device" }, };
            var data = new JObject { { "sid", sid } };
            sendJob.Add("", data);
            return sendJob;
        }
        /// <summary>
        /// bus旧数据的子网ID
        /// </summary>
        public byte bus_SubnetId
        {
            get
            {
                var sss = JObject.Parse(bus_Data);
                var subnetId = Convert.ToByte(sss.GetValue("SubnetID").ToString());
                return subnetId;
            }
        }
 
        /// <summary>
        /// bus旧数据的设备ID
        /// </summary>
        public byte bus_DeviceId
        {
            get
            {
                var sss = JObject.Parse(bus_Data);
                var deviceId = Convert.ToByte(sss.GetValue("DeviceID").ToString());
                return deviceId;
            }
        }
        /// <summary>
        /// bus旧数据的回路ID
        /// </summary>
        public byte bus_LoopId
        {
            get
            {
                var sss = JObject.Parse(bus_Data);
                var loopId = Convert.ToByte(sss.GetValue("LoopID").ToString());
                return loopId;
            }
        }
 
        public string bus_DeviceType = "";
 
        public string GetBusId ()
        {
            string busId = "";
            if(!string.IsNullOrEmpty(bus_Data))
            {
                var sss = JObject.Parse(bus_Data);
                var subnetId = sss.GetValue("SubnetID").ToString();
                var deviceId = sss.GetValue("DeviceID").ToString();
                var loopId = sss.GetValue("LoopID").ToString();
                busId = subnetId + "_" + deviceId + "_" + loopId;
            }
            return busId;
        }
    }
}