From 4a61a132ce09b1fd42fd80fcbff1855bad4c0f48 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期三, 15 一月 2020 11:15:24 +0800 Subject: [PATCH] 2020-01-15 1.优化。 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs | 208 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 141 insertions(+), 67 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs index f8a1686..6d97bb6 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs @@ -26,7 +26,7 @@ /// <summary> /// 淇敼缃戝叧澶囨敞 /// </summary> - static void ResetGatewayName (GatewayBase gatewayBase,Button nameButton1) + static void ResetGatewayName (GatewayBase gatewayBase, Button nameButton1) { Dialog dialog = new Dialog (); @@ -62,7 +62,7 @@ Height = Application.GetRealHeight (80), TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor, - Text = "Gateway Name : " + Text = "Gateway Name : " }; bodyView.AddChidren (btnZoneName); @@ -136,6 +136,9 @@ public void ShowPage (RegionInfoRes home) { + ////2020-01-14 绗竴娆¤繘鍏ラ〉闈㈤粯璁� + //UserConfig.Instance.IsLocalEncrypt = false; + addedList = new List<Common> (); inView = this; #region 鏍囬 @@ -177,6 +180,8 @@ }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { + //閲嶇疆涓哄姞瀵嗘ā寮� + UserConfig.Instance.IsLocalEncrypt = true; (Parent as PageLayout).PageIndex -= 1; }; @@ -256,7 +261,7 @@ var delAlert = new Alert ("", "If you delete gateway, you will not able to control the devices. Still you want to delete the gateway?", "No", "Yes"); delAlert.Show (); - delAlert.ResultEventHandler += ( sender1, e1) => { + delAlert.ResultEventHandler += (sender1, e1) => { if (e1) { var delFile = IO.FileUtils.ReadFiles ().FindAll ((w) => { return (w.Split ('_') [0] == "Equipment") && (w.Split ('_') [2] == common.SubnetID.ToString ()); @@ -294,68 +299,11 @@ bool goNext = false; System.Threading.Tasks.Task.Run (() => { try { - if (common.Type == DeviceType.OnePortWirelessFR || common.Type == DeviceType.OnePortMqttFR) { - var backBytes = Control.ControlBytesSendHasReturn (Command.Read_APP_Data_STORE_1D5C_CMD, common.SubnetID, common.DeviceID, new byte [] { }); - if (backBytes == null) { - Application.RunOnMainThread (() => { - new Alert ("", "No response from gateway. Please make sure the gateway is online and its firmware is up to date.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - }); - } - - - if (backBytes.Length >= 37) { - //******************浣忓畢ID string绫诲瀷************* - bool enable = backBytes [0] == 0 ? false : true; - //杩斿洖浣忓畢ID 杞负string绫诲瀷 - string backIDStr = CommonPage.MyEncodingGB2312.GetString (backBytes, 1, 36).Trim ('\0'); - backIDStr = backIDStr.Replace ("每", ""); - //2020-01-12 - backIDStr = backIDStr.Replace ("\0", ""); - if (enable || backIDStr == UserConfig.Instance.CurrentRegion.Id || string.IsNullOrEmpty (backIDStr) ) { - goNext = true; - } else { - //#if DEBUG - // Control.ControlBytesSendHasReturn (Command.Write_APP_Data_STORE_1D5E_CMD, common.SubnetID, common.DeviceID, new byte [] { 0, 0, 0, 0 }); - //#endif - Application.RunOnMainThread (() => { - //new Alert ("", "This gateway has been bound to a residence, please reset it before binding to another residence.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - new Alert ("", ErrorCode.UnableToBindGateway, Language.StringByID (R.MyInternationalizationString.Close)).Show (); - - }); - } - - //******************浣忓畢ID int绫诲瀷************* - //bool enable = backBytes [32] == 0 ? false : true; - //int bingResideceId = 0; - ////杩斿洖浣忓畢ID 杞负string绫诲瀷 - //string backIDStr = CommonPage.MyEncodingGB2312.GetString (backBytes, 0, 32).Trim ('\0'); - - //bingResideceId = Utlis.StringToInt (backIDStr); - - //if (true || bingResideceId == UserConfig.Instance.CurrentRegion.RegionID || bingResideceId == 0) { - // goNext = true; - //} else { - // //#if DEBUG - // // Control.ControlBytesSendHasReturn (Command.Write_APP_Data_STORE_1D5E_CMD, common.SubnetID, common.DeviceID, new byte [] { 0, 0, 0, 0 }); - // //#endif - // Application.RunOnMainThread (() => { - // new Alert ("", "This gateway has been bound to a residence, please reset it before binding to another residence.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - // }); - //} - - } else { - Application.RunOnMainThread (() => { - new Alert ("", ErrorCode.GatewayVersionLow, Language.StringByID (R.MyInternationalizationString.Close)).Show (); - }); - //goNext = true; - } - - } else { - goNext = true; - } + goNext = CheckIfGoNext (common); + } catch (Exception ex) { - Console.WriteLine (ex.Message); + Console.WriteLine (ex.Message); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); @@ -376,6 +324,8 @@ UserMiddle.guidePageView.AddChidren (guide); guide.ShowHomeList (); UserMiddle.guidePageView.PageIndex = 0; + //閲嶇疆涓哄姞瀵嗘ā寮� + UserConfig.Instance.IsLocalEncrypt = true; } } }); @@ -418,13 +368,16 @@ MainPage.Loading.Start ("Searching for gateway..."); }); #region 鎼滅储璁惧 + ////2020-01-14 榛樿鏄庢枃寮�濮嬫悳绱� + UserConfig.Instance.IsLocalEncrypt = false; + CommonPage.LocalPhoneFindDevice = true; CommonPage.RandomHigh = (byte)new Random ().Next (255); CommonPage.RandomLow = (byte)new Random ().Next (255); CommonPage.GateWayList.Clear (); CommonPage.FindGateway = true; //濡傛灉涓ゆ閮芥病鏈夋暟鎹弽棣堬紝灏变笉璇诲彇 - int readCount = 2; + int readCount = 3; while (0 < readCount) { readCount--; System.IO.MemoryStream ms = new System.IO.MemoryStream (); @@ -466,7 +419,7 @@ System.Threading.Thread.Sleep (800); //濡傛灉鏁伴噺涓嶇浉绛夛紝灏遍噸缃鏁� if (tempCount != CommonPage.GateWayList.Count) { - readCount = 2; + readCount = 3; } } CommonPage.FindGateway = false; @@ -490,7 +443,7 @@ } } else { if (this != null && this.Parent != null) { - if (inThisView){// this.Parent.GetChildren (this.Parent.ChildrenCount - 1) == this) { + if (inThisView) {// this.Parent.GetChildren (this.Parent.ChildrenCount - 1) == this) { confirmAlert1.Show (); confirmAlert1.ResultEventHandler += (ddf, ddd) => { MainPage.Loading.Hide (); @@ -503,7 +456,128 @@ } }); } - }) { IsBackground=true}.Start(); + }) { IsBackground = true }.Start (); + } + + + + + //static byte [] AseKeyBytes; + /// <summary> + /// 淇敼缃戝叧鏈湴鍔犲瘑 + /// </summary> + /// <param name="gatewayDeicve"></param> + /// <param name="isEncrypt"></param> + /// <returns></returns> + static bool SetGateWayLocalEncryption (GatewayBase gatewayDeicve, bool isEncrypt = true) + { + if (UserConfig.Instance.CurrentRegion == null) return false; + + byte [] AseKeyBytes = UserConfig.Instance.GenerateLocalEncryptionKey (); + byte [] sendBytes = new byte [17]; + sendBytes [0] = isEncrypt ? (byte)1 : (byte)0; //0:涓嶅姞瀵� 1:鍔犲瘑 + Array.Copy (AseKeyBytes, 0, sendBytes, 1, 16); + byte [] backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayLocalEncryption, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); + return CheckIsSuccessfulWithBytes (backBytes); + } + + /// <summary> + /// 鍒ゆ柇鏄惁淇鎴愬姛 F8 = 鎴愬姛锛� F5=澶辫触 + /// </summary> + /// <param name="backBytes"></param> + /// <returns></returns> + static bool CheckIsSuccessfulWithBytes (byte [] backBytes) + { + if (backBytes == null) { + Application.RunOnMainThread (() => { + new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), + Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + return false; + } else if (backBytes [0] == 0xF8) {//F8 = 鎴愬姛锛� F5=澶辫触 + return true; + } else { + Application.RunOnMainThread (() => { + new Alert ("", Language.StringByID (R.MyInternationalizationString.OperationFailed), + Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + return false; + } + } + + + /// <summary> + /// CheckIfGoNext + /// </summary> + /// <returns></returns> + static bool CheckIfGoNext (GatewayBase common) + { + bool goNext = false; + if (common.Type == DeviceType.OnePortWirelessFR || common.Type == DeviceType.OnePortMqttFR) { + goNext = CheckIfGoNextMqttGateway (common); + } else { + goNext = true; + } + return goNext; + } + + /// <summary> + /// CheckIfGoNextMqttGateway + /// </summary> + /// <returns></returns> + static bool CheckIfGoNextMqttGateway (GatewayBase common) + { + Application.RunOnMainThread (() => { + MainPage.Loading.Start ("Please wait..."); + }); + + bool goNext = false; + if (!UserConfig.Instance.IsLocalEncrypt) { + //濡傛灉娌″姞瀵嗭紝璧颁慨鏀瑰姞瀵嗘柟娉� + var result = SetGateWayLocalEncryption (common); + if (!result) { + MainPage.LoadingHide (); + return result;//淇敼澶辫触 杩斿洖goNext false + } + //淇敼鎴愬姛,璁剧疆鏈湴涓哄姞瀵嗘柟寮� + UserConfig.Instance.IsLocalEncrypt = true; + //string aseKeyStr = CommonPage.MyEncodingUTF8.GetString (AseKeyBytes); + //UserConfig.Instance.LocalEncryptKey = aseKeyStr; + System.Console.WriteLine ($"============>LocalEncryptKey 鍔犲瘑鎴愬姛Key涓猴細{UserConfig.Instance.LocalEncryptKey}"); + } + + var backBytes = Control.ControlBytesSendHasReturn (Command.Read_APP_Data_STORE_1D5C_CMD, common.SubnetID, common.DeviceID, new byte [] { }); + + if (backBytes == null) { + Application.RunOnMainThread (() => { + new Alert ("", "No response from gateway. Please make sure the gateway is online and its firmware is up to date.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + + MainPage.LoadingHide (); + + if (backBytes.Length >= 37) { + //******************浣忓畢ID string绫诲瀷************* + bool enable = backBytes [0] == 0 ? false : true; + //杩斿洖浣忓畢ID 杞负string绫诲瀷 + string backIDStr = CommonPage.MyEncodingGB2312.GetString (backBytes, 1, 36).Trim ('\0'); + backIDStr = backIDStr.Replace ("每", ""); + //2020-01-12 + backIDStr = backIDStr.Replace ("\0", ""); + if (enable || backIDStr == UserConfig.Instance.CurrentRegion.Id || string.IsNullOrEmpty (backIDStr)) { + goNext = true; + } else { + Application.RunOnMainThread (() => { + new Alert ("", ErrorCode.UnableToBindGateway, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + } else { + Application.RunOnMainThread (() => { + new Alert ("", ErrorCode.GatewayVersionLow, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + return goNext; + } } } \ No newline at end of file -- Gitblit v1.8.0