Я подключился к устройству и успешно прочитал данные. Затем я отключаю устройство, DeviceConnectionChanged
событие запускается с Disconnected
состоянием соединения, затем включаю устройство, DeviceConnectionChanged
событие запускается с Connected
состоянием соединения, после этого l oop Connected
затем Disconnected
, .. . до отключения устройства.
Это функция подключения:
public async Task<ConnectionResult> ConnectAsync(string deviceId, Guid serviceUUID)
{
_device = await BluetoothLEDevice.FromIdAsync(deviceId);
if (_device == null)
{
return new Schema.ConnectionResult()
{
IsConnected = false,
ErrorMessage = "Could not find specified device"
};
}
if (!_device.DeviceInformation.Pairing.IsPaired)
{
_device = null;
return new Schema.ConnectionResult()
{
IsConnected = false,
ErrorMessage = "Device is not paired"
};
}
_device.ConnectionStatusChanged -= DeviceConnectionStatusChanged;
_device.ConnectionStatusChanged += DeviceConnectionStatusChanged; // <===== event here
...
}
private void DeviceConnectionStatusChanged(BluetoothLEDevice sender, object args)
{
OnConnectionStatusChanged(new ConnectionStatusChangedEventArgs()
{
IsConnected = sender != null && (sender.ConnectionStatus == BluetoothConnectionStatus.Connected)
}); // <==== always fire after reconnect
}
public event EventHandler<Events.ConnectionStatusChangedEventArgs> ConnectionStatusChanged;
protected virtual void OnConnectionStatusChanged(Events.ConnectionStatusChangedEventArgs e)
{
ConnectionStatusChanged?.Invoke(this, e);
}
Я хочу автоматически переподключиться и прочитать данные, когда устройство будет доступно. Как я могу это сделать?