public async Task Disconnect() { try { if (_uartService != null) { await _uartService.Stop(); } if (_gattDeviceService != null) { _gattDeviceService.Dispose(); } if (_bleDevice != null) { _bleDevice.Dispose(); } } catch (Exception ex) { Debug.WriteLine("BLE_Device::Disconnect EXCEPTION " + ex.ToString()); } finally { _uartService = null; _gattDeviceService = null; _bleDevice = null; _sbResponse.Clear(); } }
public async Task <bool> Connect() { try { _bleDevice = await BluetoothLEDevice.FromBluetoothAddressAsync(BLEMacAddress); if (_bleDevice != null) { GattDeviceServicesResult gattServicesResult = await _bleDevice.GetGattServicesAsync(); foreach (GattDeviceService service in gattServicesResult.Services) { if (service.Uuid.CompareTo(GattServiceUuids.UART) == 0) { _bleDevice.ConnectionStatusChanged += ConnectionStatusChanged; _gattDeviceService = service; _uartService = new UARTService(); _uartService.RXReceived += OnUARTServiceRXReceived; bool result = await _uartService.Start(_gattDeviceService, true); if (result) { return(true); } else { Debug.WriteLine("BLE_Device Connect UART Service start failure"); } } } } } catch (Exception ex) { Debug.WriteLine("BLE_Device::Connect EXCEPTION " + ex.ToString()); } await Disconnect(); return(false); }