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