From 34e965100d635346e2d4cd6e6013bdaed66b3004 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期四, 02 一月 2020 19:52:13 +0800
Subject: [PATCH] 2019.1.2-3
---
ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs | 276 +++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 218 insertions(+), 58 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
index 51ae471..728bea6 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
@@ -13,14 +13,13 @@
/// </summary>
public async System.Threading.Tasks.Task<AddedDeviceBindResponseAllData> AddDeviceBindAsync(AddBindData addBindData)
{
-
return await System.Threading.Tasks.Task.Run(async () =>
{
- var result = new AddedDeviceBindResponseAllData();
+ AddedDeviceBindResponseAllData result = null;
var mainGateway = ZbGateway.MainGateWay;
if (mainGateway == null)
{
- result.errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�";
+ result = new AddedDeviceBindResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
return result;
}
Action<string, string> action = (topic, message) =>
@@ -45,37 +44,38 @@
else if (topic == gatewayID + "/" + "Bind/SetBind_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 = ZbGateway.MainGateWay.getGatewayBaseInfo.gwID };
- var tempBindList = Newtonsoft.Json.Linq.JArray.Parse(jobject["Data"]["BindList"].ToString());
- if (tempBindList == null)
+ //var tempBindList = Newtonsoft.Json.Linq.JArray.Parse(jobject["Data"]["BindList"].ToString());
+ var tempResult = Newtonsoft.Json.JsonConvert.DeserializeObject<AddedDeviceBindResponseData>(jobject["Data"].ToString());
+ if (tempResult == null)
{
- result.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�";
+ result = new AddedDeviceBindResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
}
else
{
- var dataBindRes = new AddedDeviceBindResponseData();
- for (int m = 0; tempBindList != null && m < tempBindList.Count; m++)
- {
- var tempBind = tempBindList[m];
- dataBindRes.BindList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AddBindListResponseObj>(tempBind.ToString()));
- }
- if (dataBindRes != null)
- {
- result.addedDeviceBindResponseData = dataBindRes;
- DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
- }
+ //var dataBindRes = new AddedDeviceBindResponseData();
+ //for (int m = 0; tempBindList != null && m < tempBindList.Count; m++)
+ //{
+ // var tempBind = tempBindList[m];
+ // dataBindRes.BindList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AddBindListResponseObj>(tempBind.ToString()));
+ //}
+ //if (dataBindRes != null)
+ //{
+ result = new AddedDeviceBindResponseAllData { addedDeviceBindResponseData = tempResult };
+ DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
+ //}
}
}
- else if (topic == gatewayID + "/" + "Bind/BindResult")
- {
- 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 = ZbGateway.MainGateWay.getGatewayBaseInfo.gwID };
- var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBindResultResponseData>(jobject["Data"].ToString());
+ //else if (topic == gatewayID + "/" + "Bind/BindResult")
+ //{
+ // 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 = ZbGateway.MainGateWay.getGatewayBaseInfo.gwID };
+ // var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBindResultResponseData>(jobject["Data"].ToString());
- if (tempData != null)
- {
- result.addBindResultResponseData = tempData;
- }
- DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
- }
+ // if (tempData != null)
+ // {
+ // result = new AddedDeviceBindResponseAllData { addBindResultResponseData = tempData };
+ // }
+ // DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
+ //}
};
mainGateway.Actions += action;
DebugPrintLog("Bind/SetBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond);
@@ -91,9 +91,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);
}
@@ -101,18 +101,17 @@
{
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;
mainGateway.Send("Bind/SetBind", jObject.ToString());
}
}
@@ -121,28 +120,54 @@
}
var dateTime = DateTime.Now;
- while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+ while ((DateTime.Now - dateTime).TotalMilliseconds < 20 * 1000)
{
- await System.Threading.Tasks.Task.Delay(100);
- if (result == null || result.addedDeviceBindResponseData == null)
- {
- continue;
- }
- if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
- {
- if (result.addBindResultResponseData != null)
- {
- break;
- }
- }
- else
+ await System.Threading.Tasks.Task.Delay(10);
+ if (result != null)
{
break;
}
}
if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
{
- result.errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
+ result = new AddedDeviceBindResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+ }
+ //while ((DateTime.Now - dateTime).TotalMilliseconds < 20*1000)
+ //{
+ //await System.Threading.Tasks.Task.Delay(100);
+ //if (result == null || result.addedDeviceBindResponseData == null)
+ //{
+ // continue;
+ //}
+ //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)
+ // {
+ // break;
+ // }
+ //}
+ //else
+ //{
+ // break;
+ //}
+ //}
+ if ((DateTime.Now - dateTime).TotalMilliseconds > 20 * 1000)
+ {
+ result = new AddedDeviceBindResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
}
mainGateway.Actions -= action;
System.Console.WriteLine($"Bind/SetBind_Actions 閫�鍑� { System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond}");
@@ -190,7 +215,12 @@
/// <summary>
///缁戝畾鍒楄〃 锛屽綋Status=0鏃跺瓨鍦�
/// </summary>
- public List<AddBindListResponseObj> BindList = new List<AddBindListResponseObj>();
+ public List<BindListResponseObj> BindList = new List<BindListResponseObj>();
+ /// <summary>
+ /// 0锛氱粦瀹氭墍鏈夌洰鏍囨垚鍔�
+ ///<para>1锛氱粦瀹氱洰鏍囧け璐ワ紝缁戝畾璁惧鐩爣鏈夋紡鎺�</para>
+ /// </summary>
+ public int Result = -1;
}
/// <summary>
@@ -304,6 +334,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 () =>
@@ -406,7 +554,6 @@
}
catch { }
-
var dateTime = DateTime.Now;
while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
{
@@ -415,7 +562,21 @@
{
continue;
}
- if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count)
+ 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)
{
@@ -427,14 +588,12 @@
break;
}
}
-
if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
{
responseData.errorMessageBase = "鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
}
mainGateway.Actions -= action;
System.Console.WriteLine("DeviceBind/DelBind_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
return responseData;
});
}
@@ -495,7 +654,7 @@
/// 0锛氱Щ闄ゆ垚鍔燂紙璇ョ姸鎬佸彧閫傜敤鐢ㄤ簬璺ㄧ綉鍏崇粦瀹氥�佺粦瀹氬満鏅�佸け鏁堣澶囷紙璁惧宸茬粡浠庣綉鍏崇殑璁惧鍒楄〃涓垹闄わ級銆傚悓缃戝叧璁惧闂寸殑瑙i櫎缁戝畾闇�瑕佽妭鐐硅澶囩殑纭鎴愬姛淇℃伅锛屼笉浼氱洿鎺ュ弽棣堟垚鍔熴�傦級
///<para>1锛氬け璐ワ紝璁惧涓嶅湪缁戝畾鍒楄〃涓�</para>
///<para>3锛氬け璐ワ紝鍦ㄧ瓑寰呰妭鐐硅澶囩‘璁ゆ槸鍚﹁В闄ょ粦瀹氭垚鍔燂紙褰撶綉鍏宠繕鍦ㄧ瓑寰呮煇鑺傜偣璁惧纭鏄惁瑙i櫎缁戝畾鎴愬姛鐨勫弽棣堜俊鎭椂锛屽鎴风鍐嶆鍙戦�佽В闄ょ粦瀹氳鑺傜偣璁惧鐨勬寚浠わ紝灏嗗弽棣堣鐘舵�併�傦級</para>
- ///<para>4锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/RemoveBindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔熴��</para>
+ ///<para>2锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/RemoveBindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔熴��</para>
/// </summary>
public int Result;
@@ -973,7 +1132,7 @@
catch { }
var dateTime = DateTime.Now;
- while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+ while ((DateTime.Now - dateTime).TotalMilliseconds < 25 * 1000)
{
await System.Threading.Tasks.Task.Delay(10);
if (d != null)
@@ -981,7 +1140,8 @@
break;
}
}
- if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+ //涓�閿竻闄ょ洰鏍囷紝浼氬洜涓虹洰鏍囨暟閲忓鑰屽姞闀挎椂闂达紝鐩墠鏆傚畾20绉�
+ if ((DateTime.Now - dateTime).TotalMilliseconds > 25 * 1000)
{
d = new ClearBindInfoResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
}
--
Gitblit v1.8.0