From 4f0ab0ad21ce450b7856d50f98322a7899361386 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 22 九月 2020 10:30:01 +0800
Subject: [PATCH] 不要下载这个备份
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAirConditionerLogic.cs | 680 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 667 insertions(+), 13 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAirConditionerLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAirConditionerLogic.cs
index 24712e7..2193c34 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAirConditionerLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAirConditionerLogic.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json.Linq;
+using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
@@ -72,10 +73,10 @@
#endregion
- #region 鈻� 鎵撳紑绌鸿皟___________________________
+ #region 鈻� 鍏抽棴绌鸿皟___________________________
/// <summary>
- /// 鎵撳紑绌鸿皟
+ /// 鍏抽棴绌鸿皟
/// </summary>
/// <param name="device">绌鸿皟瀵硅薄</param>
/// <returns></returns>
@@ -113,22 +114,29 @@
#region 鈻� 璁剧疆绌鸿皟鐨勮嚜瀹氫箟妯″紡_______________
/// <summary>
- /// 璁剧疆绌鸿皟鐨勮嚜瀹氫箟妯″紡
+ /// 璁剧疆绌鸿皟鐨勮嚜瀹氫箟妯″紡 鈽嗏槅鈽嗏槅鈽�
/// </summary>
/// <param name="device">绌鸿皟瀵硅薄</param>
/// <param name="data">浠庝簩杩涘埗杞崲鐨勫崄杩涘埗鍊�</param>
/// <returns></returns>
- public async Task<bool> SetAcModeSupport(AC device, int data)
+ public bool SetAcModeSupport(AC device, int data)
{
- var result = await HdlDeviceAttributeLogic.Current.WriteDeviceAttribute(device, 513, 4099, 25, data);
- //妫�娴嬬綉鍏宠繑鍥炵殑鍏遍�氶敊璇姸鎬佺爜
- string error = HdlCheckLogic.Current.CheckCommonErrorCode(result);
- if (error != null)
+ //濡傛灉鏄櫄鎷熶綇瀹�
+ if (Common.Config.Instance.Home.IsVirtually == true)
{
- this.ShowTipMsg(error);
+ //鐩存帴娣诲姞缂撳瓨
+ TemplateData.TemplateDeviceDataLogic.Current.SetAcModeSupport(device, data, null);
+ return true;
+ }
+ //鍙戦�佹暟鎹�
+ string sendData = HdlDeviceAttributeLogic.Current.GetWriteDeviceAttributeText(device.DeviceAddr, device.DeviceEpoint, 513, 4099, 25, data);
+ var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "SetWritableValue", sendData, "SetWritableValue_Respon");
+ if (result.ErrorMsg != null)
+ {
+ this.ShowTipMsg(result.ErrorMsg);
return false;
}
- if (result == null || result.setWritableValueResponData == null)
+ if (result.ErrorMsgDiv == 0)
{
//璁剧疆绌鸿皟妯″紡澶辫触
string msg = Language.StringByID(R.MyInternationalizationString.uSetAcModeFail);
@@ -137,14 +145,70 @@
this.ShowTipMsg(msg); ;
return false;
}
- if (result.setWritableValueResponData.Status != 0)
+
+ var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(result.ReceiptData);
+ if (responeData.Status != 0)
{
//璁剧疆绌鸿皟妯″紡澶辫触
string msg = Language.StringByID(R.MyInternationalizationString.uSetAcModeFail);
this.ShowTipMsg(msg);
return false;
}
- await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.A绌鸿皟鑷畾涔夋ā寮�, data);
+
+ //娣诲姞缂撳瓨
+ TemplateData.TemplateDeviceDataLogic.Current.SetAcModeSupport(device, data, result.JsonData[0]);
+
+ return true;
+ }
+
+ #endregion
+
+ #region 鈻� 璁剧疆鍚敤绌鸿皟鐨勬憜椋庡姛鑳絖____________
+
+ /// <summary>
+ /// 璁剧疆鍚敤绌鸿皟鐨勬憜椋庡姛鑳� 鈽嗏槅鈽嗏槅鈽�
+ /// </summary>
+ /// <param name="device">绌鸿皟瀵硅薄</param>
+ /// <param name="data">浠庝簩杩涘埗杞崲鐨勫崄杩涘埗鍊�</param>
+ /// <returns></returns>
+ public bool SetUseAcSwingFunctionStatu(AC device, int data)
+ {
+ //濡傛灉鏄櫄鎷熶綇瀹�
+ if (Common.Config.Instance.Home.IsVirtually == true)
+ {
+ //鐩存帴娣诲姞缂撳瓨
+ TemplateData.TemplateDeviceDataLogic.Current.SetAcSwingModeSupport(device, data, null);
+ return true;
+ }
+ //鍙戦�佹暟鎹�
+ string sendData = HdlDeviceAttributeLogic.Current.GetWriteDeviceAttributeText(device.DeviceAddr, device.DeviceEpoint, 514, 4097, 25, data);
+ var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "SetWritableValue", sendData, "SetWritableValue_Respon");
+ if (result.ErrorMsg != null)
+ {
+ this.ShowTipMsg(result.ErrorMsg);
+ return false;
+ }
+ if (result.ErrorMsgDiv == 0)
+ {
+ //璁剧疆绌鸿皟鎽嗛澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uSetAirConditionerSwingFunctionFail);
+ //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+ msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+ this.ShowTipMsg(msg);
+ return false;
+ }
+
+ var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(result.ReceiptData);
+ if (responeData.Status != 0)
+ {
+ //璁剧疆绌鸿皟鎽嗛澶辫触
+ string msg = Language.StringByID(R.MyInternationalizationString.uSetAirConditionerSwingFunctionFail);
+ this.ShowTipMsg(msg);
+ return false;
+ }
+
+ //娣诲姞缂撳瓨
+ TemplateData.TemplateDeviceDataLogic.Current.SetAcSwingModeSupport(device, data, result.JsonData[0]);
return true;
}
@@ -180,5 +244,595 @@
}
#endregion
+
+
+ #region 鈻� 鍗囩骇绌鸿皟绗笁鏂规ā鍧楃殑鎺ュ彛___________
+
+ #region 璇诲彇IRACC妯″潡鍥轰欢鐗堟湰锛圓PP -> Zigbee MCU锛�
+ ///<summary >
+ ///璇诲彇IRACC妯″潡鍥轰欢鐗堟湰
+ /// </summary>
+ public async System.Threading.Tasks.Task<ReadACFirewareVersionResponAllData> ReadACFirewareVersionAsync(CommonDevice device)
+ {
+ ReadACFirewareVersionResponAllData result = null;
+ var Gateway = device.Gateway;
+ if (Gateway == null)
+ {
+ result = new ReadACFirewareVersionResponAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" };
+ return result;
+ }
+ return await System.Threading.Tasks.Task.Run(async () =>
+ {
+ Action<string, string> action = (topic, message) =>
+ {
+ var gatewayID = topic.Split('/')[0];
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+ if (topic == gatewayID + "/" + "ZbDataPassthrough")
+ {
+ var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+
+ if (clientDataPassthroughResponseData == null)
+ {
+ result = new ReadACFirewareVersionResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+ }
+ else
+ {
+ if (clientDataPassthroughResponseData?.PassData != null)
+ {
+ var data = clientDataPassthroughResponseData.PassData;
+ var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
+ if (command == "0259")
+ {
+ var tempD = new ReadACFirewareVersionResponData();
+ tempD.Status = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16);
+ if (data.Length == 82)
+ {
+ var firewareString = data.Substring(12);
+ var aa = firewareString.Length;
+ firewareVersion = firewareString;
+ var bytes = new byte[firewareString.Length / 2];
+ for (int i = 0; i < bytes.Length; i++)
+ {
+ bytes[i] = Convert.ToByte(firewareString.Substring(i * 2, 2), 16);
+ }
+
+ var firewareVersionTemp = System.Text.Encoding.ASCII.GetString(bytes);
+ tempD.FirewareVersion = firewareVersionTemp.Replace('\0', ' ').Trim();
+ }
+ result = new ReadACFirewareVersionResponAllData { readACFirewareVersionResponData = tempD };
+ System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0258_{topic}");
+ }
+ }
+ }
+ }
+ };
+
+ Gateway.Actions += action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+ try
+ {
+ var passData = ReadACFirewareVersionData("01");
+ var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+ var data = new JObject { { "PassData", passData } };
+ jObject.Add("Data", data);
+ Gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+ }
+ catch { }
+
+ var dateTime = DateTime.Now;
+ while ((DateTime.Now - dateTime).TotalMilliseconds < 3000)
+ {
+ await System.Threading.Tasks.Task.Delay(10);
+ if (result != null)
+ {
+ break;
+ }
+ }
+ if ((DateTime.Now - dateTime).TotalMilliseconds > 3000)
+ {
+ result = new ReadACFirewareVersionResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+ }
+ Gateway.Actions -= action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+ return result;
+ });
+ }
+
+ /// <summary>
+ /// 璇诲彇IRACC妯″潡鍥轰欢鐗堟湰
+ /// </summary>
+ string ReadACFirewareVersionData(string reserve)
+ {
+ string data = "";
+ string dataLength = "05";
+ string dataComand1 = "58";
+ string dataComand2 = "02";
+ string dataSerialNum = "01";
+ string addDataLength = "01";
+ string reserveData = reserve;
+
+ try
+ {
+ data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+ reserveData;
+ }
+ catch { };
+
+ return data;
+ }
+
+ /// <summary>
+ /// IRACC妯″潡鍥轰欢鐗堟湰,缃戝叧鍙嶉淇℃伅
+ /// </summary>
+ public ReadACFirewareVersionResponAllData readACFirewareVersionResponAllData;
+ /// <summary>
+ /// IRACC妯″潡鍥轰欢鐗堟湰,缃戝叧鍙嶉淇℃伅
+ /// </summary>
+ [System.Serializable]
+ public class ReadACFirewareVersionResponAllData
+ {
+ /// <summary>
+ /// 閿欒淇℃伅
+ /// </summary>
+ public string errorMessageBase;
+ /// <summary>
+ /// 缃戝叧淇℃伅閿欒鍙嶉
+ /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
+ /// </summary>
+ public CommonDevice.ErrorResponData errorResponData;
+ /// <summary>
+ /// IRACC妯″潡鍥轰欢鐗堟湰淇℃伅
+ /// </summary>
+ public ReadACFirewareVersionResponData readACFirewareVersionResponData;
+ }
+
+ /// <summary>
+ /// IRACC妯″潡鍥轰欢鐗堟湰鐨勬暟鎹�
+ /// </summary>
+ [System.Serializable]
+ public class ReadACFirewareVersionResponData
+ {
+ /// <summary>
+ /// 鐘舵��
+ ///<para>0--鎴愬姛</para>
+ ///<para>1--澶辫触</para>
+ ///<para>ff--鏃犳晥</para>
+ /// </summary>
+ public int Status;
+ /// <summary>
+ /// 鍥轰欢鐗堟湰
+ /// </summary>
+ public string FirewareVersion;
+ }
+ #endregion
+
+ #region 鍗囩骇IRACC妯″潡閫氱煡锛圓PP -> Zigbee MCU锛�
+ ///<summary >
+ ///鍗囩骇IRACC妯″潡閫氱煡
+ /// <para>firewareVer:鍥轰欢鐗堟湰</para>
+ /// <para>firewareSize:鍥轰欢澶у皬</para>
+ /// </summary>
+ public async System.Threading.Tasks.Task<ResponseAllData> UpggradeACNotificationAsync(CommonDevice device, string firewareVer, long firewareSize)
+ {
+ ResponseAllData result = null;
+ var Gateway = device.Gateway;
+ if (Gateway == null)
+ {
+ result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" };
+ return result;
+ }
+ return await System.Threading.Tasks.Task.Run(async () =>
+ {
+ Action<string, string> action = (topic, message) =>
+ {
+ var gatewayID = topic.Split('/')[0];
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+ if (topic == gatewayID + "/" + "ZbDataPassthrough")
+ {
+ var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+
+ if (clientDataPassthroughResponseData == null)
+ {
+ result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+ }
+ else
+ {
+ if (clientDataPassthroughResponseData?.PassData != null)
+ {
+ var data = clientDataPassthroughResponseData.PassData;
+ var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
+ if (command == "025b")
+ {
+ var tempD = new ResponseData();
+ if (data.Length == 12)
+ {
+ tempD.status = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16);
+ }
+ result = new ResponseAllData { responseData = tempD };
+ System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+ }
+ }
+ }
+ }
+ };
+
+ Gateway.Actions += action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+ try
+ {
+ var passData = UpggradeACNotificationData(firewareVer, firewareSize);
+ var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+ var data = new JObject { { "PassData", passData } };
+ jObject.Add("Data", data);
+ Gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+ }
+ catch { }
+
+ var dateTime = DateTime.Now;
+ while ((DateTime.Now - dateTime).TotalMilliseconds < 3000)
+ {
+ await System.Threading.Tasks.Task.Delay(10);
+ if (result != null)
+ {
+ break;
+ }
+ }
+ if ((DateTime.Now - dateTime).TotalMilliseconds > 3000)
+ {
+ result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+ }
+ Gateway.Actions -= action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+ return result;
+ });
+ }
+
+ private string firewareVersion = string.Empty;
+ /// <summary>
+ /// 鍗囩骇IRACC妯″潡閫氱煡杩斿洖
+ /// </summary>
+ string UpggradeACNotificationData(string firewareVer, long firewareSize)
+ {
+ string data = "";
+ string dataLength = "2C";
+ string dataComand1 = "5A";
+ string dataComand2 = "02";
+ string dataSerialNum = "01";
+ string addDataLength = "28";
+ string deviceUpgradeMethod = "01";
+ string firewareVersionData = "";
+ string firewareSizeData = "";
+
+ try
+ {
+ //鍥轰欢鐗堟湰
+ var firewareVerBytes = System.Text.Encoding.ASCII.GetBytes(firewareVer);
+ for (int i = 0; i < firewareVerBytes.Length; i++)
+ {
+ var fw = Convert.ToString(firewareVerBytes[i], 16);
+ if (fw.Length == 1)
+ {
+ fw = "0" + fw;
+ }
+ firewareVersionData += fw;
+ }
+
+ var aa = firewareVersionData.Length;
+ firewareVersionData = firewareVersionData.PadRight(70, '0');
+
+ //鍥轰欢灏哄
+ var tempFwSize = Convert.ToString(firewareSize, 16);
+ tempFwSize = tempFwSize.PadLeft(8, '0');
+ for (int i = 6; i >= 0; i = i - 2)
+ {
+ firewareSizeData += tempFwSize.Substring(i, 2);
+ }
+
+ data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+ deviceUpgradeMethod + firewareVersionData + firewareSizeData;
+
+ }
+ catch { };
+
+ return data;
+ }
+
+ /// <summary>
+ ///鍗囩骇IRACC妯″潡閫氱煡鍥炲
+ /// </summary>
+ public ResponseAllData keyColorDataResponseAllData;
+ [System.Serializable]
+ public class ResponseAllData
+ {
+ /// <summary>
+ /// 閿欒淇℃伅
+ /// </summary>
+ public string errorMessageBase;
+ /// <summary>
+ /// 缃戝叧淇℃伅閿欒鍙嶉
+ /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
+ /// </summary>
+ public CommonDevice.ErrorResponData errorResponData;
+ /// <summary>
+ /// 鍗囩骇IRACC妯″潡閫氱煡淇℃伅
+ /// </summary>
+ public ResponseData responseData;
+ }
+
+ /// <summary>
+ /// 鍗囩骇IRACC妯″潡閫氱煡鍥炲锛圸igbee MCU -> APP锛�
+ /// </summary>
+ [System.Serializable]
+ public class ResponseData
+ {
+ /// <summary>
+ /// 鐘舵�佸��
+ /// <para>0--鐗堟湰鍙蜂笉涓�鑷达紙鍙互鍗囩骇</para>
+ /// <para>1--鐗堟湰鍙蜂竴鑷达紙涓嶇敤鍗囩骇</para>
+ /// <para>2--棰勭暀锛堟殏鏃朵笉鐢ㄥ埌</para>
+ /// <para>ff--鏃犳晥锛堟殏鏃朵笉鐢ㄥ埌锛�</para>
+ /// </summary>
+ public int status = -1;
+ }
+ #endregion
+
+ #region 璁惧璇锋眰APP鑾峰彇鍗囩骇鏁版嵁 锛圸igbee MCU -> APP,涓诲姩涓婃姤锛�
+ /// <summary>
+ ///璁惧璇锋眰APP鑾峰彇鍗囩骇鏁版嵁锛圸igbee MCU -> APP,涓诲姩涓婃姤锛�
+ /// </summary>
+ [System.Serializable]
+ public class DeviceRequestUpgradeResponseData
+ {
+ /// <summary>
+ /// 鏁版嵁鍋忕Щ閲忥紝姣忎釜鍒嗗寘鍋忕Щ閲�+锛�1-43锛�
+ /// </summary>
+ public string offset = string.Empty;
+ /// <summary>
+ /// 鏁版嵁闀垮害len
+ /// </summary>
+ public int dataLength = -1;
+ }
+ #endregion
+
+ #region 鍙戝崌绾ф暟鎹埌璁惧锛圓PP -> Zigbee MCU锛�
+ ///<summary >
+ ///璇诲彇IRACC妯″潡鍥轰欢鐗堟湰
+ /// <para>reserve:0-ff</para>
+ /// </summary>
+ public void UpgradeAsync(CommonDevice device, SendUpgradeData upgradeData)
+ {
+ var Gateway = device.Gateway;
+ if (Gateway == null)
+ {
+ return;
+ }
+ Action<string, string> action = (topic, message) => { };
+ Gateway.Actions += action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+ try
+ {
+ string passData = "";
+ if (upgradeData != null)
+ {
+ passData = SendUpgrade(upgradeData);
+ }
+
+ var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+ var data = new JObject { { "PassData", passData } };
+ jObject.Add("Data", data);
+ Gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+ }
+ catch { }
+
+ Gateway.Actions -= action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+ }
+
+ /// <summary>
+ /// 鍙戝崌绾ф暟鎹埌璁惧
+ /// </summary>
+ string SendUpgrade(SendUpgradeData upgradeData)
+ {
+ string data = "";
+ string dataLength = "";
+ string dataComand1 = "5D";
+ string dataComand2 = "02";
+ string dataSerialNum = "01";
+ string addDataLength = "";
+
+ string status = "";
+ string offset = "";
+ string upgradeDataLength = "";
+ string dataString = "";
+
+ try
+ {
+ var len = 4 + 1 + 4 + 1 + upgradeData.dataLength;
+ dataLength = Convert.ToString(len, 16);
+ if (dataLength.Length == 1)
+ {
+ dataLength = "0" + dataLength;
+ }
+
+ addDataLength = Convert.ToString(6 + upgradeData.dataLength, 16);
+ if (addDataLength.Length == 1)
+ {
+ addDataLength = "0" + addDataLength;
+ }
+
+ if (upgradeData.status == 0)
+ {
+ status = "00";
+ }
+ else if (upgradeData.status == 1)
+ {
+ status = "01";
+ }
+ else
+ {
+ status = "ff";
+ }
+
+
+ offset = upgradeData.offset;
+
+ var dl = Convert.ToString(upgradeData.dataLength, 16);
+ if (dl.Length == 1)
+ {
+ upgradeDataLength = "0" + dl;
+ }
+ else
+ {
+ upgradeDataLength = dl;
+ }
+
+ for (int i = 0; i < upgradeData.databytes.Length; i++)
+ {
+ var dataB = Convert.ToString(upgradeData.databytes[i], 16);
+ if (dataB.Length == 1)
+ {
+ dataB = "0" + dataB;
+ }
+ dataString += dataB;
+ }
+
+ data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+ status + offset + upgradeDataLength + dataString;
+ }
+ catch { };
+
+ return data;
+ }
+
+ /// <summary>
+ /// 鍙戦�佸崌绾ф暟鎹埌璁惧锛圓PP -> Zigbee MCU锛�
+ /// </summary>
+ [System.Serializable]
+ public class SendUpgradeData
+ {
+ /// <summary>
+ /// 0--鎴愬姛
+ ///<para>1--澶辫触</para>
+ ///<para>ff--鏃犳晥</para>
+ /// </summary>
+ public int status = 0;
+ /// <summary>
+ /// 鏁版嵁鍋忕Щ閲忥紝姣忎釜鍒嗗寘鍋忕Щ閲�+锛�1-43锛�
+ /// </summary>
+ public string offset;
+ /// <summary>
+ /// 鏁版嵁闀垮害len
+ /// </summary>
+ public int dataLength = -1;
+
+ /// <summary>
+ /// 鍒嗗寘鏁版嵁
+ /// </summary>
+ public byte[] databytes;
+ }
+ #endregion
+
+ #region 鍒嗗寘缁撴潫锛圸igbee MCU -> APP,涓诲姩涓婃姤锛�
+ /// <summary>
+ /// 璁惧璇锋眰APP鑾峰彇鍒嗗寘缁撴潫鍛戒护锛圸igbee MCU -> APP锛�
+ /// </summary>
+ [System.Serializable]
+ public class DeviceRequestFinishResponseData
+ {
+ /// <summary>
+ /// 0-ff
+ /// </summary>
+ public int reserve = -1;
+ }
+ #endregion
+
+ #region 鍒嗗寘缁撴潫锛圓PP -> Zigbee MCU锛�
+ ///<summary >
+ ///璇诲彇IRACC妯″潡鍥轰欢鐗堟湰
+ /// <para>status:0--鎴愬姛;1--澶辫触;ff--鏃犳晥 .</para>
+ /// </summary>
+ public void SendFinishAsync(CommonDevice device, int status)
+ {
+ var Gateway = device.Gateway;
+ if (Gateway == null)
+ {
+ return;
+ }
+ Action<string, string> action = (topic, message) => { };
+ Gateway.Actions += action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+ try
+ {
+ var passData = SendFinishDataString(status);
+ var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+ var data = new JObject { { "PassData", passData } };
+ jObject.Add("Data", data);
+ Gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+ }
+ catch { }
+
+ Gateway.Actions -= action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+ }
+
+ /// <summary>
+ /// 鍙戝崌绾ф暟鎹埌璁惧
+ /// </summary>
+ string SendFinishDataString(int status)
+ {
+ string data = "";
+ string dataLength = "05";
+ string dataComand1 = "5F";
+ string dataComand2 = "02";
+ string dataSerialNum = "01";
+ string addDataLength = "01";
+ string statusString = "";
+ try
+ {
+ if (status == 0)
+ {
+ statusString = "00";
+ }
+ else if (status == 1)
+ {
+ statusString = "01";
+ }
+ else
+ {
+ statusString = "ff";
+ }
+ data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+ statusString;
+ }
+ catch { };
+
+ return data;
+ }
+
+ /// <summary>
+ /// 鍒嗗寘缁撴潫杩斿洖锛圓PP -> Zigbee MCU
+ /// </summary>
+ //[System.Serializable]
+ public class SendFinishData
+ {
+ /// <summary>
+ /// 鐘舵�侊細鎴愬姛/澶辫触
+ ///<para>0--鎴愬姛<<para>
+ ///<para>1--澶辫触<<para>
+ ///<para>ff--鏃犳晥<<para>
+ /// </summary>
+ public int status = -1;
+ }
+
+ #endregion
+ #endregion
}
}
--
Gitblit v1.8.0