如何检查从配对的BLE设备到当前设备的所有传入请求?
我认为有可能使用Events,也许UWP有针事件,或者我必须实现自定义事件,但正确的方法在哪里?
微软已经解释了GATT Server,我认为这不是我需要的,因为我不需要具有服务和特性的服务器,我只需要检查收到的请求并在我的应用程序中解析传递的数据。
答案 0 :(得分:0)
我找不到确定方法来检查传入的请求,但我做了一些技巧。 应用程序可以订阅来自设备的通知(在我的情况下是它的Mi Band 2),并通过ValueChanged从该设备接收一些数据。 有一次我在连接和配对设备之后在App.xaml.cs中调用ValueChanged处理程序,并且这适用于所有应用程序,我不需要一次又一次地调用它。
这是App.xaml.cs代码的一部分。
protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
MiBand2SDK.MiBand2 band = new MiBand2SDK.MiBand2();
var page = typeof(Views.AuthPage);
// Checking for device availability and current session
if (_LocalSettings.Values["isAuthorized"] != null
&& await band.ConnectAsync())
{
if (e.PreviousExecutionState == ApplicationExecutionState.NotRunning && await band.Auth.AuthenticateAsync())
page = typeof(Views.MainPage);
else if (band.Auth.IsAuthenticated())
page = typeof(Views.MainPage);
// Here we are, this notification handler of responses from the band.
band.HeartRate.SetNotificationHandler();
}
else
{
System.Diagnostics.Debug.WriteLine("Not Authenticated...");
}
// other part of code...
这是HeartRate.SetNotificationHandler()代码:
public async void SetNotificationHandler()
{
_heartRateMeasurementCharacteristic = await Gatt.GetCharacteristicByServiceUuid(HEART_RATE_SERVICE, HEART_RATE_MEASUREMENT_CHARACTERISTIC);
Debug.WriteLine("Subscribe for HeartRate notifications from band...");
if (await _heartRateMeasurementCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify) == GattCommunicationStatus.Success)
// Just subscribe for notifications and set ValueChanged. It's all.
_heartRateMeasurementCharacteristic.ValueChanged += HeartRateMeasurementCharacteristicValueChanged;
}
希望它有所帮助...