From 74a9ba8e9a2df9c39f9c2eb212a5ac889a055cd4 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期二, 03 十二月 2019 10:47:51 +0800 Subject: [PATCH] 优化UI细节(请合并最新代码) --- ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs | 321 ++++++++++++++++++++++++++-------------------------- 1 files changed, 161 insertions(+), 160 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs index 79e9351..ebed365 100644 --- a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs +++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs @@ -317,134 +317,15 @@ /// <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 () => // { - // var responseData = new DelDeviceBindResponseAllData(); + // DelDeviceBindResponseAllData responseData = null; // var mainGateway = ZbGateway.MainGateWay; // if (mainGateway == null) // { - // responseData.errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�"; - // return responseData; + // responseData = new DelDeviceBindResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" }; // } // Action<string, string> action = (topic, message) => @@ -459,15 +340,14 @@ // if (temp == null) // { - // responseData.errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖"; + // responseData = new DelDeviceBindResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; // } // else // { - // responseData.errorResponData = temp; - // responseData.errorMessageBase = ErrorMess(temp.Error); + // 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 }; @@ -475,16 +355,15 @@ // if (tempData == null) // { - // responseData.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�"; - + // responseData = new DelDeviceBindResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; // } // else // { - // responseData.delDeviceBindResponseData = tempData; + // 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 }; @@ -492,7 +371,7 @@ // if (tempData != null) // { - // responseData.removeBindResultResponseData = tempData; + // responseData = new DelDeviceBindResponseAllData { removeBindResultResponseData = tempData }; // System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); // } // } @@ -531,7 +410,6 @@ // {"RemoveBindList",removeBindList} // }; // jObject.Add("Data", data); - // //ZbGateway.MainGateWay.CurrentGateWayId = ZbGateway.MainGateWay.getGatewayBaseInfo?.gwID; // mainGateway.Send("Bind/RemoveBind", jObject.ToString()); // } // } @@ -540,46 +418,168 @@ // var dateTime = DateTime.Now; // while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime) // { - // await System.Threading.Tasks.Task.Delay(100); - // if (responseData == null || responseData.delDeviceBindResponseData == null) - // { - // continue; - // } - // if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count) - // { - // if (responseData.removeBindResultResponseData != null) - // { - // break; - // } - // } - // else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count) - // { - // if (responseData.removeBindResultResponseData != null) - // { - // break; - // } - // } - // else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 4).Count) - // { - // if (responseData.removeBindResultResponseData != null) - // { - // break; - // } - // } - // else + // await System.Threading.Tasks.Task.Delay(10); + // if (responseData != null) // { // break; // } // } // if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) // { - // responseData.errorMessageBase = "鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔"; + // 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 () => + { + var responseData = new DelDeviceBindResponseAllData(); + var mainGateway = ZbGateway.MainGateWay; + if (mainGateway == null) + { + responseData.errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�"; + return responseData; + } + + 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.errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖"; + } + else + { + responseData.errorResponData = temp; + responseData.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.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�"; + + } + else + { + responseData.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.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); + //ZbGateway.MainGateWay.CurrentGateWayId = ZbGateway.MainGateWay.getGatewayBaseInfo?.gwID; + mainGateway.Send("Bind/RemoveBind", jObject.ToString()); + } + } + catch { } + + var dateTime = DateTime.Now; + while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime) + { + await System.Threading.Tasks.Task.Delay(100); + if (responseData == null || responseData.delDeviceBindResponseData == null) + { + continue; + } + if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count) + { + if (responseData.removeBindResultResponseData != null) + { + break; + } + } + else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count) + { + if (responseData.removeBindResultResponseData != null) + { + break; + } + } + else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count) + { + if (responseData.removeBindResultResponseData != null) + { + break; + } + } + else + { + break; + } + } + if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) + { + responseData.errorMessageBase = "鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔"; + } + mainGateway.Actions -= action; + System.Console.WriteLine("DeviceBind/DelBind_Actions 閫�鍑�" + System.DateTime.Now.ToString()); + return responseData; + }); + } /// <summary> ///瑙i櫎缁戝畾鏁版嵁,缃戝叧鍙嶉淇℃伅 @@ -1123,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