From 9d61367c1fd278f58f721d4c0e69999f89e4485d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 12 十二月 2019 14:14:30 +0800
Subject: [PATCH] 添加最新绑定机制
---
ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs | 116 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 66 insertions(+), 50 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 ebed365..6876132
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
@@ -15,11 +15,11 @@
{
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) =>
@@ -47,7 +47,7 @@
var tempBindList = Newtonsoft.Json.Linq.JArray.Parse(jobject["Data"]["BindList"].ToString());
if (tempBindList == null)
{
- result.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�";
+ result = new AddedDeviceBindResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
}
else
{
@@ -59,22 +59,22 @@
}
if (dataBindRes != null)
{
- result.addedDeviceBindResponseData = dataBindRes;
+ result = new AddedDeviceBindResponseAllData { addedDeviceBindResponseData = dataBindRes };
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);
@@ -111,7 +111,6 @@
{ "BindList", bindList }
};
jObject.Add("Data", data);
- //ZbGateway.MainGateWay.CurrentGateWayId = ZbGateway.MainGateWay.getGatewayBaseInfo?.gwID;
mainGateway.Send("Bind/SetBind", jObject.ToString());
}
}
@@ -120,42 +119,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 == 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
+ 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}");
@@ -203,7 +214,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;
}
/// <summary>
@@ -1115,7 +1131,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)
@@ -1123,8 +1139,8 @@
break;
}
}
- //涓�閿竻闄ょ洰鏍囷紝浼氬洜涓虹洰鏍囨暟閲忓鑰屽姞闀挎椂闂达紝鐩墠鏆傚畾10绉�
- if ((DateTime.Now - dateTime).TotalMilliseconds > 10 * 1000)
+ //涓�閿竻闄ょ洰鏍囷紝浼氬洜涓虹洰鏍囨暟閲忓鑰屽姞闀挎椂闂达紝鐩墠鏆傚畾20绉�
+ if ((DateTime.Now - dateTime).TotalMilliseconds > 25 * 1000)
{
d = new ClearBindInfoResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
}
@@ -1172,5 +1188,5 @@
}
#endregion
- }
-}
+ }
+}
\ No newline at end of file
--
Gitblit v1.8.0