From b3e96fce4cc01113128ddf8e0a18fc19594a9e56 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 05 十二月 2019 18:38:30 +0800
Subject: [PATCH] 一个新的版本

---
 ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs |  123 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 121 insertions(+), 2 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
index 4953b41..ebed365 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
@@ -317,6 +317,124 @@
         /// <summary>
         /// 瑙i櫎缁戝畾
         /// </summary>
+        //public async System.Threading.Tasks.Task<DelDeviceBindResponseAllData> DelDeviceBindAsync(DelDeviceBindData delDeviceBindData)
+        //{
+        //    return await System.Threading.Tasks.Task.Run(async () =>
+        //    {
+        //        DelDeviceBindResponseAllData responseData = null;
+        //        var mainGateway = ZbGateway.MainGateWay;
+        //        if (mainGateway == null)
+        //        {
+        //            responseData = new DelDeviceBindResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+        //        }
+
+        //        Action<string, string> action = (topic, message) =>
+        //        {
+        //            var gatewayID = topic.Split('/')[0];
+        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+        //            if (topic == gatewayID + "/" + "Error_Respon")
+        //            {
+        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
+        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+
+        //                if (temp == null)
+        //                {
+        //                    responseData = new DelDeviceBindResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+        //                }
+        //                else
+        //                {
+        //                    responseData = new DelDeviceBindResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+        //                }
+        //            }
+        //            //鍦烘櫙绉婚櫎
+        //            if (topic == gatewayID + "/" + "Bind/RemoveBind_Respon")
+        //            {
+        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
+        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<DelDeviceBindResponseData>(jobject["Data"].ToString());
+
+        //                if (tempData == null)
+        //                {
+        //                    responseData = new DelDeviceBindResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+        //                }
+        //                else
+        //                {
+        //                    responseData = new DelDeviceBindResponseAllData { delDeviceBindResponseData = tempData };
+        //                    System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+        //                }
+        //            }
+        //            //璁惧绉婚櫎
+        //            if (topic == gatewayID + "/" + "Bind/RemoveBindResult")
+        //            {
+        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
+        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveBindResultResponseData>(jobject["Data"].ToString());
+
+        //                if (tempData != null)
+        //                {
+        //                    responseData = new DelDeviceBindResponseAllData { removeBindResultResponseData = tempData };
+        //                    System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+        //                }
+        //            }
+        //        };
+        //        mainGateway.Actions += action;
+        //        System.Console.WriteLine("DeviceBind/DelBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
+        //        try
+        //        {
+        //            if (delDeviceBindData != null)
+        //            {
+        //                var jObject = new JObject { { "DeviceAddr", delDeviceBindData.DeviceAddr }, { "Epoint", delDeviceBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5003 } };
+        //                var removeBindList = new JArray { };
+        //                foreach (var removeBindInfo in delDeviceBindData.RemoveBindList)
+        //                {
+        //                    if (removeBindInfo.BindType == 0)
+        //                    {
+        //                        var dInfo = new JObject{
+        //                    { "BindMacAddr",removeBindInfo.BindMacAddr},
+        //                 { "BindEpoint", removeBindInfo.BindEpoint} ,
+        //                 { "BindCluster", removeBindInfo.BindCluster} ,
+        //                 { "BindType",removeBindInfo.BindType}
+        //                    };
+        //                        removeBindList.Add(dInfo);
+        //                    }
+        //                    else if (removeBindInfo.BindType == 1)
+        //                    {
+        //                        var dInfo = new JObject{
+        //                 { "BindCluster", removeBindInfo.BindCluster} ,
+        //                 { "BindType",removeBindInfo.BindType},
+        //                 { "BindScenesId", removeBindInfo.BindScenesId}
+        //                    };
+        //                        removeBindList.Add(dInfo);
+        //                    }
+        //                }
+        //                var data = new JObject {
+        //            {"RemoveBindList",removeBindList}
+        //             };
+        //                jObject.Add("Data", data);
+        //                mainGateway.Send("Bind/RemoveBind", jObject.ToString());
+        //            }
+        //        }
+        //        catch { }
+
+        //        var dateTime = DateTime.Now;
+        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+        //        {
+        //            await System.Threading.Tasks.Task.Delay(10);
+        //            if (responseData != null)
+        //            {
+        //                break;
+        //            }
+        //        }
+        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+        //        {
+        //            responseData = new DelDeviceBindResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+        //        }
+        //        mainGateway.Actions -= action;
+        //        System.Console.WriteLine("DeviceBind/DelBind_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+        //        return responseData;
+        //    });
+        //}
+
+        //涔嬪墠2绉嶆柟寮忓弽棣堢粨鏋�
         public async System.Threading.Tasks.Task<DelDeviceBindResponseAllData> DelDeviceBindAsync(DelDeviceBindData delDeviceBindData)
         {
             return await System.Threading.Tasks.Task.Run(async () =>
@@ -441,7 +559,7 @@
                             break;
                         }
                     }
-                    else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 4).Count)
+                    else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
                     {
                         if (responseData.removeBindResultResponseData != null)
                         {
@@ -1005,7 +1123,8 @@
                         break;
                     }
                 }
-                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                //涓�閿竻闄ょ洰鏍囷紝浼氬洜涓虹洰鏍囨暟閲忓鑰屽姞闀挎椂闂达紝鐩墠鏆傚畾10绉�
+                if ((DateTime.Now - dateTime).TotalMilliseconds > 10 * 1000)
                 {
                     d = new ClearBindInfoResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
                 }

--
Gitblit v1.8.0