From 82a773d1783549caca563831aac8affc059deedf Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 07 十一月 2019 10:56:13 +0800 Subject: [PATCH] 合并了全部的代码,IOS 图片需要从新引入工程 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs | 81 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 81 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs index 63fc904..1a2bc3b 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs @@ -203,5 +203,86 @@ } #endregion + + #region 鈻� 鍐欏叆璁惧灞炴�______________________ + + /// <summary> + /// 璁剧疆绌鸿皟鐨勮嚜瀹氫箟妯″紡 + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <param name="clusterId">闀濱D</param> + /// <param name="attributeId">灞炴�D</param> + /// <param name="attributeDataType">鏁版嵁绫诲瀷</param> + /// <param name="attributeData">闇�瑕佸啓鍏ョ殑鏁版嵁</param> + /// <returns></returns> + public async System.Threading.Tasks.Task<CommonDevice.SetWritableValueResponAllData> WriteDeviceAttribute(CommonDevice device, int clusterId, int attributeId, int attributeDataType, int attributeData) + { + var MyGateway = device.Gateway; + if (MyGateway == null) + { + return null; + } + + CommonDevice.SetWritableValueResponAllData 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 temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); + if (temp == null) + { + d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; + } + else + { + d = new CommonDevice.SetWritableValueResponAllData { errorResponData = temp, errorMessageBase = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error) }; + } + } + + if (topic == gatewayID + "/" + "SetWritableValue_Respon") + { + var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(jobject["Data"].ToString()); + if (tempData == null) + { + d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new CommonDevice.SetWritableValueResponAllData { setWritableValueResponData = tempData }; + } + } + }; + MyGateway.Actions += action; + try + { + var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", clusterId }, { "Command", 120 } }; + var data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", attributeData } }; + jObject.Add("Data", data); + MyGateway.Send("SetWritableValue", jObject.ToString()); + } + catch { } + + var timeOut = 0; + while (timeOut <= 30) + { + await System.Threading.Tasks.Task.Delay(100); + if (d != null) + { + break; + } + timeOut++; + } + if (timeOut > 30 && d == null) + { + d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; + } + MyGateway.Actions -= action; + return d; + } + + #endregion } } -- Gitblit v1.8.0