From 315e336680efe5c654726c2cdae630146fe5c99c Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期五, 29 十一月 2019 10:06:19 +0800 Subject: [PATCH] 合并代码 --- ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs | 355 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 307 insertions(+), 48 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs old mode 100755 new mode 100644 index 1116805..79e9351 --- a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs +++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs @@ -5,7 +5,7 @@ namespace ZigBee.Device { [System.Serializable] - public class BindObj :CommonDevice + public class BindObj : CommonDevice { #region 璁惧缁戝畾 /// <summary> @@ -13,7 +13,6 @@ /// </summary> public async System.Threading.Tasks.Task<AddedDeviceBindResponseAllData> AddDeviceBindAsync(AddBindData addBindData) { - return await System.Threading.Tasks.Task.Run(async () => { var result = new AddedDeviceBindResponseAllData(); @@ -74,10 +73,11 @@ { result.addBindResultResponseData = tempData; } + DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}"); } }; mainGateway.Actions += action; - DebugPrintLog("Bind/SetBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToString()); + DebugPrintLog("Bind/SetBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond); try { if (addBindData != null) @@ -90,9 +90,9 @@ { var dInfo = new JObject{ { "BindMacAddr",bindInfo.BindMacAddr}, - { "BindEpoint", bindInfo.BindEpoint} , - { "BindCluster", bindInfo.BindCluster} , - { "BindType",bindInfo.BindType} + { "BindEpoint", bindInfo.BindEpoint} , + { "BindCluster", bindInfo.BindCluster} , + { "BindType",bindInfo.BindType} }; bindList.Add(dInfo); } @@ -100,15 +100,15 @@ { var dInfo = new JObject{ { "BindCluster", bindInfo.BindCluster} , - { "BindType",bindInfo.BindType}, - { "BindScenesId", bindInfo.BindScenesId} + { "BindType",bindInfo.BindType}, + { "BindScenesId", bindInfo.BindScenesId} }; bindList.Add(dInfo); } } var data = new JObject{ - {"BindName",addBindData.BindName}, - { "BindList", bindList } + {"BindName",addBindData.BindName}, + { "BindList", bindList } }; jObject.Add("Data", data); //ZbGateway.MainGateWay.CurrentGateWayId = ZbGateway.MainGateWay.getGatewayBaseInfo?.gwID; @@ -127,7 +127,21 @@ { continue; } - if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0).Count) + if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count) + { + if (result.addBindResultResponseData != null) + { + break; + } + } + else if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count) + { + if (result.addBindResultResponseData != null) + { + break; + } + } + else if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count) { if (result.addBindResultResponseData != null) { @@ -144,7 +158,7 @@ result.errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔"; } mainGateway.Actions -= action; - System.Console.WriteLine($"Bind/SetBind_Actions 閫�鍑� {System.DateTime.Now}"); + System.Console.WriteLine($"Bind/SetBind_Actions 閫�鍑� { System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond}"); return result; }); } @@ -307,12 +321,11 @@ { 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) => @@ -327,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 }; @@ -343,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 }; @@ -360,7 +371,7 @@ if (tempData != null) { - responseData.removeBindResultResponseData = tempData; + responseData = new DelDeviceBindResponseAllData { removeBindResultResponseData = tempData }; System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); } } @@ -399,44 +410,176 @@ {"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).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 == 4).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櫎缁戝畾鏁版嵁,缃戝叧鍙嶉淇℃伅 @@ -749,7 +892,7 @@ /// <summary> ///浠庤妭鐐硅澶囨湰鍦拌褰曡鍙栫粦瀹氬垪琛ㄤ俊鎭� /// </summary> - public async System.Threading.Tasks.Task<GetDeviceLocalBindResponseAllData> GetDeviceLocalBindAsync(int startIndex=0) + public async System.Threading.Tasks.Task<GetDeviceLocalBindResponseAllData> GetDeviceLocalBindAsync(int startIndex = 0) { return await System.Threading.Tasks.Task.Run(async () => { @@ -784,8 +927,8 @@ if (topic == gatewayID + "/" + "Bind/GetDeviceLocalBind_Respon") { var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; - var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDeviceLocalBindResponseData>(jobject["Data"].ToString()); - if (tempData == null) + var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDeviceLocalBindResponseData>(jobject["Data"].ToString()); + if (tempData == null) { d = new GetDeviceLocalBindResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; } @@ -801,8 +944,8 @@ try { DebugPrintLog("Bind/GetDeviceLocalBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToString()); - var jObject = new JObject { { "DeviceAddr", DeviceAddr },{ "Cluster_ID", 0 }, { "Command", 5008 } }; - var data = new JObject {{ "StartIndex", startIndex } }; + var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Cluster_ID", 0 }, { "Command", 5008 } }; + var data = new JObject { { "StartIndex", startIndex } }; mainGateway.Send("Bind/GetDeviceLocalBind", jObject.ToString()); } catch { } @@ -872,7 +1015,7 @@ /// <summary> /// 璇ユ璇诲彇杩斿洖缁戝畾鍒楄〃涓暟 /// </summary> - public int ReturnBindNum; + public int ReturnBindNum; /// <summary> /// 缁戝畾鍒楄〃锛屽綋Result=0鏃跺瓨鍦� /// </summary> @@ -912,5 +1055,121 @@ public int BindEpoint; } #endregion + + #region 鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭� + /// <summary> + ///鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭� + /// </summary> + public async System.Threading.Tasks.Task<ClearBindInfoResponseAllData> ClearBindInfoAsync() + { + if (Gateway == null) + { + return null; + } + return await System.Threading.Tasks.Task.Run(async () => + { + ClearBindInfoResponseAllData d = null; + 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 = Gateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); + + if (temp == null) + { + d = new ClearBindInfoResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; + } + else + { + d = new ClearBindInfoResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; + } + } + + if (topic == gatewayID + "/" + "Bind/ClearBindInfo_Respon") + { + var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; + var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClearBindInfoResponseData>(jobject["Data"].ToString()); + if (tempData == null) + { + d = new ClearBindInfoResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new ClearBindInfoResponseAllData { clearBindInfoResponseData = tempData }; + System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); + } + } + }; + Gateway.Actions += action; + DebugPrintLog("Bind/ClearBindInfo_Actions 鍚姩" + "_" + System.DateTime.Now.ToString()); + + try + { + var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5006 } }; + Gateway.Send("Bind/ClearBindInfo", jObject.ToString()); + } + catch { } + + var dateTime = DateTime.Now; + while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime) + { + await System.Threading.Tasks.Task.Delay(10); + if (d != null) + { + break; + } + } + if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) + { + d = new ClearBindInfoResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; + } + Gateway.Actions -= action; + DebugPrintLog("Bind/ClearBindInfo_Actions 閫�鍑�" + System.DateTime.Now.ToString()); + + return d; + }); + } + + /// <summary> + ///鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氭暟鎹�,缃戝叧鍙嶉淇℃伅 + /// </summary> + public ClearBindInfoResponseAllData clearBindInfoResponseAllData; + [System.Serializable] + public class ClearBindInfoResponseAllData + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <summary> + /// 鎺у埗璁惧缁戝畾鐨勮澶囧垪琛ㄥ洖澶嶆暟鎹� + /// </summary> + public ClearBindInfoResponseData clearBindInfoResponseData; + } + + /// <summary> + /// 鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭洖澶嶇殑鏁版嵁 + /// </summary> + public ClearBindInfoResponseData clearBindInfoResponseData; + [System.Serializable] + public class ClearBindInfoResponseData + { + /// <summary> + /// 0锛氭垚鍔� + ///<para>1锛氱粦瀹氫俊鎭笉瀛樺湪</para> + /// </summary> + public int Result; + } + + #endregion } } -- Gitblit v1.8.0