wxr
2020-01-10 1a4b95a7ebef71838bd3eda2c22056bbf0db65ec
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HDL_ON.DAL;
using HDL_ON.DAL.Net;
using HDL_ON.Entity;
using HDL_ON.Entity.Enumerative;
using HDL_ON.UI;
using Newtonsoft.Json.Linq;
 
namespace HDL_ON
{
    public partial class Control
    {
 
 
        public static byte[] Send(JObject commandString, Function function, int sendCount)
        {
            if (string.IsNullOrEmpty(function.A_Protocol))
            {
                try
                {
                    var subnetID = Convert.ToByte(JObject.FromObject(function.Bus_Protocol).GetValue("SubnetID"));
                    var deviceID = Convert.ToByte(JObject.FromObject(function.Bus_Protocol).GetValue("DeviceID"));
                    byte[] bytes = DataConversion_Bus(commandString);
 
                    var sss = ControlBytesSendHasReturn(Command.SetSingleLight, subnetID, deviceID, bytes, sendCount);
                    return sss;
                }
                catch (Exception ex)
                {
                    MainPage.Log($"发送数据异常: {ex.Message}");
                }
            }
            else
            {
                var jObject = new JObject {
                { "DeviceAddr", 11},
                { "Epoint", 22},
                    { "Cluster_ID", 8 },
                    { "Command", 33},
                    { "SendMode", 2 }
                };
                var data = new JObject {
                    { "Level", 1 },
                    { "TransitionTime", 0 }
                };
                jObject.Add("Data", data);
 
                return null;
            }
            return null;
        }
 
 
        /// <summary>
        /// 将A协议控制数据转换程bus协议的控制数据
        /// </summary>
        /// <param name="commandString"></param>
        /// <returns></returns>
        static byte[] DataConversion_Bus(JObject commandString)
        {
            //反馈:
            //{
            //"Namespace": "HDL", "Command": "writeRespone",
            //“Type”:”device”, "objects": [{
            //"sid": "0001002019101209000025670100010001”, "statue": "success”
            //}] }
            byte[] sendBytes; 
 
            switch (commandString.GetValue("Command").ToString())
            {
                case "write":
                    var jobj = JObject.FromObject(commandString.GetValue("objects"));
                    var functionType = jobj.GetValue("sid").ToString().Substring(24, 2);
                    switch ((FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(functionType)))
                    {
                        case FunctionType.Light:
                            if (jobj.ContainsKey("Switch"))//继电器
                            {
                                if (jobj.ContainsKey("Dimmer"))
                                {//调光器
 
                                }
                                else//继电器
                                {
 
                                }
                            }
                            break;
                    }
                    break;
            }
 
 
            return null;
        }
 
    }
}