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/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs |  179 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 101 insertions(+), 78 deletions(-)

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;

--
Gitblit v1.8.0