From 2f05a4874e64b3c2e60055e1246025f8a0367f78 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 15 三月 2021 17:53:09 +0800
Subject: [PATCH] 红外宝最终版本

---
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs |   98 ++++++++---
 HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs                           |  179 ++++++++++++---------
 HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs                               |  114 ++++++-------
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                           |    5 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs |   57 +++++-
 HDL_ON/Entity/FunctionList.cs                                                  |   23 ++
 6 files changed, 291 insertions(+), 185 deletions(-)

diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index af63fec..baaa0f8 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -201,7 +201,11 @@
         /// 鍔犺浇鍔熻兘鍒楄〃
         /// </summary>
         /// <param name="filePath"></param>
-        public void IniFunctionList(string filePath)
+        /// <param name="checkRepeat">
+        /// <para>鑰冭檻鍒版�ц兘闂杩藉姞姝ゅ彉閲�,鏄惁妫�娴嬮噸澶�,鍙function鏈夋晥</para>
+        /// <para>true:褰撻噸澶嶅瓨鍦ㄦ椂,鏇挎崲鎺�</para>
+        /// <para>false:鐩存帴鏃犳潯浠舵坊鍔�</para></param>
+        public void IniFunctionList(string filePath, bool checkRepeat = false)
         {
             // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃
             if (filePath.StartsWith("FunctionData_"))
@@ -214,10 +218,21 @@
                     FileUtlis.Files.DeleteFile(filePath);
                     return;
                 }
-
-
+                if (checkRepeat == true)
+                {
+                    //妫�娴嬮噸澶�
+                    for (int i = 0; i < Functions.Count; i++)
+                    {
+                        if (Functions[i].deviceId == tempFunction.deviceId)
+                        {
+                            //鍏堢Щ闄ゆ帀鍐嶅姞
+                            Functions.RemoveAt(i);
+                            Functions.Add(tempFunction);
+                            return;
+                        }
+                    }
+                }
                 Functions.Add(tempFunction);
-
             }
             if (filePath.StartsWith("SceneData_"))
             {
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs
index 21594a8..b416038 100644
--- a/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs
@@ -119,17 +119,20 @@
         /// <param name="FinishEvent">鎼滅储缁撴潫鐨勪簨浠�</param>
         public void ScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
         {
-            //鍐嶆妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�
-            this.CheckCanScanBluetooth((result) =>
+            HdlThreadLogic.Current.RunMain(() =>
             {
-                if (result == true)
+                //鍐嶆妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�
+                this.CheckCanScanBluetooth((result) =>
                 {
-                    HdlThreadLogic.Current.RunThread(() =>
+                    if (result == true)
                     {
-                        //寮�濮嬫悳绱㈣摑鐗�
-                        this.DoScanBluetooth(waitTime, FinishEvent);
-                    });
-                }
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //寮�濮嬫悳绱㈣摑鐗�
+                            this.DoScanBluetooth(waitTime, FinishEvent);
+                        });
+                    }
+                });
             });
         }
 
@@ -142,24 +145,36 @@
         {
             var listBluetoothInfo = new List<BluetoothInfo>();
 
-            var adapter = Android.Bluetooth.BluetoothAdapter.DefaultAdapter;
-            var scanner = adapter.BluetoothLeScanner;
+            BluetoothScanCallback scanCallback = null;
+            Android.Bluetooth.BluetoothAdapter adapter = null;
+            Android.Bluetooth.LE.BluetoothLeScanner scanner = null;
 
-            var scanCallback = new BluetoothScanCallback();
-            scanner.StartScan(null, new Android.Bluetooth.LE.ScanSettings.Builder().SetScanMode(Android.Bluetooth.LE.ScanMode.LowLatency).Build(), scanCallback);
+            //浠ラ槻涓囦竴,钃濈墮閮戒涪鍦ㄤ富绾跨▼涓繍琛�
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                adapter = Android.Bluetooth.BluetoothAdapter.DefaultAdapter;
+                scanner = adapter.BluetoothLeScanner;
 
+                scanCallback = new BluetoothScanCallback();
+                scanner.StartScan(null, new Android.Bluetooth.LE.ScanSettings.Builder().SetScanMode(Android.Bluetooth.LE.ScanMode.LowLatency).Build(), scanCallback);
+            }, ShowErrorMode.NO);
+
+            //绛夊緟
             System.Threading.Thread.Sleep(waitTime * 1000);
 
-            scanner.StopScan(scanCallback);
-            adapter.Dispose();
-
-            foreach (var data in scanCallback.listData)
+            HdlThreadLogic.Current.RunMain(() =>
             {
-                listBluetoothInfo.Add(data);
-            }
-            scanCallback.listData.Clear();
+                scanner.StopScan(scanCallback);
+                adapter.Dispose();
 
-            FinishEvent?.Invoke(listBluetoothInfo);
+                foreach (var data in scanCallback.listData)
+                {
+                    listBluetoothInfo.Add(data);
+                }
+                scanCallback.listData.Clear();
+
+                FinishEvent?.Invoke(listBluetoothInfo);
+            });
         }
 
         /// <summary>
@@ -231,24 +246,35 @@
         /// <param name="connectEvent">鍥犱负闇�瑕佸鏂瑰弽棣�,鎵�浠ヤ娇鐢ㄥ洖璋�(閾炬帴缁撴灉 false:杩炴帴澶辫触 true:杩炴帴鎴愬姛)</param>
         public void ContectBluetooth(BluetoothInfo bluetooth, Action<bool> connectEvent)
         {
-            try
+            HdlThreadLogic.Current.RunMain(() =>
             {
-                this.nowBlufiClient = new Blufi.Espressif.BlufiClient(Application.Activity, bluetooth.Device);
-
-                //涓�涓洖璋冧簨浠�
-                var callback = new InnerGattCallback();
-                callback.ConnectionStateEvent += (div, newState) =>
+                try
                 {
-                    if (div == 1)
+                    this.nowBlufiClient = new Blufi.Espressif.BlufiClient(Application.Activity, bluetooth.Device);
+
+                    //涓�涓洖璋冧簨浠�
+                    var callback = new InnerGattCallback();
+                    callback.ConnectionStateEvent += (div, newState) =>
                     {
-                        if (newState == Android.Bluetooth.ProfileState.Connected)
+                        if (div == 1)
                         {
-                            //閾炬帴寤虹珛鎴愬姛
-                            connectEvent?.Invoke(true);
-                            //鍙�氱煡涓�娆�
-                            connectEvent = null;
+                            if (newState == Android.Bluetooth.ProfileState.Connected)
+                            {
+                                //閾炬帴寤虹珛鎴愬姛
+                                connectEvent?.Invoke(true);
+                                //鍙�氱煡涓�娆�
+                                connectEvent = null;
+                            }
+                            else if (newState == Android.Bluetooth.ProfileState.Disconnected)
+                            {
+                                //鍏抽棴閾炬帴
+                                this.DisContectBluetooth();
+                                connectEvent?.Invoke(false);
+                                //鍙�氱煡涓�娆�
+                                connectEvent = null;
+                            }
                         }
-                        else if (newState == Android.Bluetooth.ProfileState.Disconnected)
+                        else if (div == -1)
                         {
                             //鍏抽棴閾炬帴
                             this.DisContectBluetooth();
@@ -256,50 +282,42 @@
                             //鍙�氱煡涓�娆�
                             connectEvent = null;
                         }
-                    }
-                    else if (div == -1)
-                    {
-                        //鍏抽棴閾炬帴
-                        this.DisContectBluetooth();
-                        connectEvent?.Invoke(false);
-                        //鍙�氱煡涓�娆�
-                        connectEvent = null;
-                    }
-                };
-                nowBlufiClient.SetGattCallback(callback);
+                    };
+                    nowBlufiClient.SetGattCallback(callback);
 
-                //鍙﹀涓�涓洖璋冧簨浠�
-                var blufiCall = new BlufiCallbackMain();
-                blufiCall.StateEvent += (div, data) =>
+                    //鍙﹀涓�涓洖璋冧簨浠�
+                    var blufiCall = new BlufiCallbackMain();
+                    blufiCall.StateEvent += (div, data) =>
+                    {
+                        //-1:寮傚父 1:姝e父 2:鍙戦�佹暟鎹垚鍔� 3:鍙戦�佹暟鎹け璐�
+                        if (div == StatuEnum.A寮傚父)
+                        {
+                            //鍏抽棴閾炬帴
+                            this.DisContectBluetooth();
+                            connectEvent?.Invoke(false);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                        else if (div == StatuEnum.A鍙戦�佹垚鍔� || div == StatuEnum.A鍙戦�佸け璐�)
+                        {
+                            sendStatuValue = div == StatuEnum.A鍙戦�佹垚鍔� ? 1 : 0;
+                        }
+                        else if (div == StatuEnum.A钃濈墮鍙嶉)
+                        {
+                            //钃濈墮杩斿洖鐨勭粨鏋�
+                            this.ReceiveEvent?.Invoke(data);
+                        }
+                    };
+                    nowBlufiClient.SetBlufiCallback(blufiCall);
+                    //鎵ц閾炬帴
+                    nowBlufiClient.Connect();
+                }
+                catch
                 {
-                    //-1:寮傚父 1:姝e父 2:鍙戦�佹暟鎹垚鍔� 3:鍙戦�佹暟鎹け璐�
-                    if (div == StatuEnum.A寮傚父)
-                    {
-                        //鍏抽棴閾炬帴
-                        this.DisContectBluetooth();
-                        connectEvent?.Invoke(false);
-                        //鍙�氱煡涓�娆�
-                        connectEvent = null;
-                    }
-                    else if (div == StatuEnum.A鍙戦�佹垚鍔� || div == StatuEnum.A鍙戦�佸け璐�)
-                    {
-                        sendStatuValue = div == StatuEnum.A鍙戦�佹垚鍔� ? 1 : 0;
-                    }
-                    else if (div == StatuEnum.A钃濈墮鍙嶉)
-                    {
-                        //钃濈墮杩斿洖鐨勭粨鏋�
-                        this.ReceiveEvent?.Invoke(data);
-                    }
-                };
-                nowBlufiClient.SetBlufiCallback(blufiCall);
-                //鎵ц閾炬帴
-                nowBlufiClient.Connect();
-            }
-            catch
-            {
-                connectEvent?.Invoke(false);
-                connectEvent = null;
-            }
+                    connectEvent?.Invoke(false);
+                    connectEvent = null;
+                }
+            });
         }
 
         /// <summary>
@@ -488,9 +506,14 @@
             try
             {
                 this.sendStatuValue = -1;
-                //鍙戦�佹暟鎹�
-                var byteData = System.Text.Encoding.UTF8.GetBytes(i_data);
-                this.nowBlufiClient.PostCustomData(byteData);
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍙戦�佹暟鎹�
+                    var byteData = System.Text.Encoding.UTF8.GetBytes(i_data);
+                    this.nowBlufiClient.PostCustomData(byteData);
+
+                }, ShowErrorMode.NO);
+
                 if (waiTime == 0) { return true; }
 
                 waiTime *= 5;
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs
index 9ecd110..8900504 100644
--- a/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs
@@ -151,17 +151,20 @@
         /// <param name="FinishEvent">鎼滅储缁撴潫鐨勪簨浠�</param>
         public void ScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
         {
-            //鍐嶆妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�
-            this.CheckCanScanBluetooth((result) =>
+            HdlThreadLogic.Current.RunMain(() =>
             {
-                if (result == true)
+                //鍐嶆妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�
+                this.CheckCanScanBluetooth((result) =>
                 {
-                    HdlThreadLogic.Current.RunThread(() =>
+                    if (result == true)
                     {
-                        //寮�濮嬫悳绱㈣摑鐗�
-                        this.DoScanBluetooth(waitTime, FinishEvent);
-                    });
-                }
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //寮�濮嬫悳绱㈣摑鐗�
+                            this.DoScanBluetooth(waitTime, FinishEvent);
+                        });
+                    }
+                });
             });
         }
 
@@ -218,45 +221,48 @@
         /// <param name="connectEvent">鍥犱负闇�瑕佸鏂瑰弽棣�,鎵�浠ヤ娇鐢ㄥ洖璋�(閾炬帴缁撴灉 false:杩炴帴澶辫触 true:杩炴帴鎴愬姛)</param>
         public void ContectBluetooth(BluetoothInfo bluetooth, Action<bool> connectEvent)
         {
-            try
+            HdlThreadLogic.Current.RunMain(() =>
             {
-                //娣诲姞浜嬩欢
-                ((BlueWifiDelegate)blufiClient.BlufiDelegate).StateEvent += (div, data) =>
+                try
                 {
-                    //-1:寮傚父 1:姝e父 2:鍙戦�佹暟鎹垚鍔� 3:鍙戦�佹暟鎹け璐�
-                    if (div == StatuEnum.A寮傚父)
+                    //娣诲姞浜嬩欢
+                    ((BlueWifiDelegate)blufiClient.BlufiDelegate).StateEvent += (div, data) =>
                     {
-                        //鍏抽棴閾炬帴
-                        this.DisContectBluetooth();
-                        connectEvent?.Invoke(false);
-                        //鍙�氱煡涓�娆�
-                        connectEvent = null;
-                    }
-                    else if (div == StatuEnum.A姝e父)
-                    {
-                        //閾炬帴寤虹珛鎴愬姛
-                        connectEvent?.Invoke(true);
-                        //鍙�氱煡涓�娆�
-                        connectEvent = null;
-                    }
-                    else if (div == StatuEnum.A鍙戦�佹垚鍔� || div == StatuEnum.A鍙戦�佸け璐�)
-                    {
-                        sendStatuValue = div == StatuEnum.A鍙戦�佹垚鍔� ? 1 : 0;
-                    }
-                    else if (div == StatuEnum.A钃濈墮鍙嶉)
-                    {
-                        //钃濈墮杩斿洖鐨勭粨鏋�
-                        this.ReceiveEvent?.Invoke(data);
-                    }
-                };
-                //鎵ц閾炬帴
-                this.blufiClient.Connect(bluetooth.Address);
-            }
-            catch
-            {
-                connectEvent?.Invoke(false);
-                connectEvent = null;
-            }
+                        //-1:寮傚父 1:姝e父 2:鍙戦�佹暟鎹垚鍔� 3:鍙戦�佹暟鎹け璐�
+                        if (div == StatuEnum.A寮傚父)
+                        {
+                            //鍏抽棴閾炬帴
+                            this.DisContectBluetooth();
+                            connectEvent?.Invoke(false);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                        else if (div == StatuEnum.A姝e父)
+                        {
+                            //閾炬帴寤虹珛鎴愬姛
+                            connectEvent?.Invoke(true);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                        else if (div == StatuEnum.A鍙戦�佹垚鍔� || div == StatuEnum.A鍙戦�佸け璐�)
+                        {
+                            sendStatuValue = div == StatuEnum.A鍙戦�佹垚鍔� ? 1 : 0;
+                        }
+                        else if (div == StatuEnum.A钃濈墮鍙嶉)
+                        {
+                            //钃濈墮杩斿洖鐨勭粨鏋�
+                            this.ReceiveEvent?.Invoke(data);
+                        }
+                    };
+                    //鎵ц閾炬帴
+                    this.blufiClient.Connect(bluetooth.Address);
+                }
+                catch
+                {
+                    connectEvent?.Invoke(false);
+                    connectEvent = null;
+                }
+            });
         }
 
         #endregion
@@ -307,27 +313,17 @@
             try
             {
                 this.sendStatuValue = -1;
-                if (waiTime == 0)
+                HdlThreadLogic.Current.RunMain(() =>
                 {
                     //鍙戦�佹暟鎹�
                     var data = new Foundation.NSData();
                     data = i_data;
                     blufiClient.PostCustomData(data);
-                    //鐩存帴杩斿洖鎴愬姛
-                    return true;
-                }
-                else
-                {
-                    //鎴栬浠栫敤鐨勬槸绾跨▼鏉ヨ皟鐢�
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        //鍙戦�佹暟鎹�
-                        var data = new Foundation.NSData();
-                        data = i_data;
-                        blufiClient.PostCustomData(data);
 
-                    }, ShowErrorMode.NO);
-                }
+                }, ShowErrorMode.NO);
+
+                if (waiTime == 0) { return true; }
+
                 waiTime *= 5;
                 while (this.sendStatuValue == -1 && waiTime > 0)
                 {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
index 220c220..8f46dd9 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
@@ -21,6 +21,10 @@
         /// wifi瀵嗙爜
         /// </summary>
         private string wifiPassword = string.Empty;
+        /// <summary>
+        /// 钃濈墮璁惧
+        /// </summary>
+        private List<HdlBluetoothLogic.BluetoothInfo> listDevice = new List<HdlBluetoothLogic.BluetoothInfo>();
 
         #endregion
 
@@ -73,24 +77,8 @@
             this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
                 CSS.CSS_Color.FirstLevelTitleColor, Application.GetRealHeight(20), btnSearch.Bottom + Application.GetRealHeight(4));
 
-            //鎼滅储鏃堕棿(绉�)
-            int searchTime = 5;
-
-            //鎼滅储钃濈墮(鐗规晥闂,鍔�1绉�)
-            this.StartSearchBluetooth(searchTime + 1);
-
-            HdlThreadLogic.Current.RunThread(() =>
-            {
-                //杩涘害鏉$壒鏁�
-                for (int i = 0; i <= searchTime; i++)
-                {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        btnProgress.SetValue(i + 1, searchTime);
-                    });
-                    System.Threading.Thread.Sleep(1000);
-                }
-            });
+            //寮�鍚繘搴︽潯鐗规晥
+            this.StartProgressSpecialEffects(btnProgress);
         }
 
         #endregion
@@ -98,15 +86,13 @@
         #region 鈻� 鎼滅储钃濈墮___________________________
 
         /// <summary>
-        /// 瀹夊崜鎼滅储钃濈墮
+        /// 鎼滅储钃濈墮
         /// </summary>
-        /// <param name="i_searchTime">鎼滅储鏃堕棿(绉�)</param>
-        private void StartSearchBluetooth(int i_searchTime)
+        private void StartSearchBluetooth()
         {
             //寮�濮嬫悳绱㈣摑鐗�
-            HdlBluetoothLogic.Current.ScanBluetooth(i_searchTime, (listBluetooth) =>
+            HdlBluetoothLogic.Current.ScanBluetooth(2, (listBluetooth) =>
             {
-                var listDevice = new List<HdlBluetoothLogic.BluetoothInfo>();
                 foreach (var device in listBluetooth)
                 {
                     //鍙湁杩欎釜鏍囪瘑,鎵嶆槸绾㈠瀹�
@@ -120,18 +106,13 @@
                 {
                     //鎽ф瘉钃濈墮缂撳瓨
                     HdlBluetoothLogic.Current.Dispone();
-                    //鏄剧ず澶辫触鐣岄潰
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        this.ShowFailView();
-                    });
                 }
                 else if (listDevice.Count == 1)
                 {
                     //濡傛灉鍙娴嬪埌涓�涓�,鍒欑洿鎺ヨ繛鎺�
                     HdlBluetoothLogic.Current.ContectBluetooth(listDevice[0], (result) =>
                     {
-                        if (result == true)
+                        if (result == true && this.Parent != null)
                         {
                             //杩炴帴鎴愬姛,鍒欒烦杞埌涓嬩竴涓晫闈�
                             HdlThreadLogic.Current.RunMain(() =>
@@ -180,6 +161,63 @@
             });
         }
 
+        /// <summary>
+        /// 寮�鍚繘搴︽潯鐗规晥
+        /// </summary>
+        private void StartProgressSpecialEffects(ProgressRowBar btnProgress)
+        {
+            //鎼滅储鏃堕棿(绉�)
+            int searchTime = 180;
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //杩涘害鏉$壒鏁�
+                for (int i = 1; i <= searchTime; i++)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        //杩涘害鏉$壒鏁�
+                        btnProgress.SetValue(i, searchTime);
+                    });
+
+                    //鐣岄潰鍏抽棴
+                    if (this.Parent == null)
+                    {
+                        break;
+                    }
+                    //濡傛灉宸茬粡鎼滅储鍒拌摑鐗�,鍒欑洿鎺ュ埌100%
+                    if (listDevice.Count > 0)
+                    {
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            btnProgress.SetValue(searchTime, searchTime);
+                        });
+                        break;
+                    }
+                    if (i % 5 == 1)
+                    {
+                        //姣�5绉掓悳绱竴娆�
+                        this.StartSearchBluetooth();
+                    }
+                    //瓒呮椂
+                    if (i >= searchTime)
+                    {
+                        System.Threading.Thread.Sleep(3000);
+                        //鏈�鍚庣殑鏃堕棿杩樻槸鎼滀笉鍒扮殑璇�
+                        if (listDevice.Count == 0)
+                        {
+                            //鏄剧ず澶辫触鐣岄潰
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                this.ShowFailView();
+                            });
+                        }
+                        break;
+                    }
+                }
+            });
+        }
+
         #endregion
 
         #region 鈻� 鏄剧ず閫夋嫨钃濈墮鍒楄〃鐨勭晫闈____________
@@ -191,6 +229,8 @@
         /// <param name="selectEvent">閫夋嫨浜嬩欢(鑰冭檻鍒癐os鍜屽畨鍗�,鎵�浠ヨ繖鏍峰畾鍙傛暟)</param>
         private void ShowBluetoothListView(List<string> listName, Action<int> selectEvent)
         {
+            if (this.Parent == null) { return; }
+
             HdlThreadLogic.Current.RunMain(() =>
             {
                 var contr = new BottomItemSelectControl(listName.Count, Language.StringByID(StringId.ChooseInfraredRemoteControl), false);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
index de75ae9..6a725c7 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
@@ -317,13 +317,49 @@
         /// <summary>
         /// 鍒锋柊绾㈠瀹濅俊鎭�
         /// </summary>
-        private void RefreshMiniRemoteControlInfo()
+        /// <param name="successEvent">鎴愬姛鐨勫洖璋冧簨浠�</param>
+        private void RefreshMiniRemoteControlInfo(Action successEvent)
         {
             var pra = new Dictionary<string, object>();
             pra.Add("homeId", Entity.DB_ResidenceData.Instance.CurrentRegion.RegionID);
+            pra.Add("spk", Entity.SPK.IrModule);
 
             var requestJson = DAL.Server.HttpUtil.GetSignRequestJson(pra);
-            DAL.Server.HttpUtil.RequestHttpsPostFroHome(DAL.Server.NewAPI.Api_Post_GetDevcieList, requestJson);
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                int count = 0;
+                while (this.Parent != null)
+                {
+                    try
+                    {
+                        //瓒呰繃5娆¢兘涓嶆垚鍔�,鐪熶笉澶勭悊浜�
+                        count++;
+                        if (count > 5) { return; }
+
+                        //鑾峰彇鍏ㄩ儴绾㈠瀹濆垪琛�
+                        var result = DAL.Server.HttpUtil.RequestHttpsPostFroHome(DAL.Server.NewAPI.Api_Post_GetDevcieList, requestJson);
+                        if (result == null || result.Code != DAL.Server.StateCode.SUCCESS)
+                        {
+                            System.Threading.Thread.Sleep(3000);
+                            continue;
+                        }
+                        var listDevice = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.DevcieApiPack>(result.Data.ToString());
+                        foreach (var newFunction in listDevice.list)
+                        {
+                            //娣诲姞鍒扮紦瀛樺綋涓�
+                            newFunction.SaveFunctionFile();
+                            Entity.FunctionList.List.IniFunctionList(newFunction.savePath, true);
+                        }
+                        //璋冪敤鍥炶皟鍑芥暟
+                        successEvent?.Invoke();
+                        return;
+                    }
+                    catch
+                    {
+                        System.Threading.Thread.Sleep(3000);
+                    }
+                }
+            });
         }
 
         #endregion
@@ -343,15 +379,16 @@
                 return;
             }
             //鍒锋柊绾㈠瀹濅俊鎭�
-            this.RefreshMiniRemoteControlInfo();
+            this.RefreshMiniRemoteControlInfo(() =>
+            {
+                //绉婚櫎杩欎釜浜嬩欢
+                HdlCloudReceiveLogic.Current.RemoveCloudReceiveEvent("AddMiniRemoteControlDirection4Page");
+                //鍋滄绾跨▼
+                this.timeoutThreadActivity = false;
 
-            //鎺ユ敹鍒板氨绉婚櫎杩欎釜浜嬩欢
-            HdlCloudReceiveLogic.Current.RemoveCloudReceiveEvent("AddMiniRemoteControlDirection4Page");
-            //鍋滄绾跨▼
-            this.timeoutThreadActivity = false;
-
-            //娣诲姞璁惧鎴愬姛涔嬪悗,澶勭悊涓�浜涗笢瑗�
-            this.DoSomethingAfterAddDeviceSuccess();
+                //娣诲姞璁惧鎴愬姛涔嬪悗,澶勭悊涓�浜涗笢瑗�
+                this.DoSomethingAfterAddDeviceSuccess();
+            });
         }
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 297cb8f..b066892 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -337,11 +337,6 @@
                         == false ? StringId.Administrators : StringId.Member
             };
             userTypeView.AddChidren(btnUserTypeName);
-            btnUserTypeIcon.MouseUpEventHandler += (sender, e) =>
-            {
-                var form = new AddThirdPartyDeviceMenuListPage();
-                form.AddForm("Evoyo");
-            };
             #endregion
             #region 浣忓畢绠$悊
 

--
Gitblit v1.8.0