UWP Как проверить входящие запросы с устройства BLE? - PullRequest
0 голосов
/ 15 мая 2018

Как проверить все входящие запросы от сопряженного устройства BLE к текущему устройству?

Я думаю, что это возможно с событиями, возможно, у UWP есть событие иглы, или я должен реализовать пользовательское событие, но где правильный путь?

У Microsoft есть объяснения по поводу GATT Server , я думаю, что это не то, что мне нужно, потому что мне не нужен сервер со службами и характеристиками, мне нужно только проверять входящий запрос и анализ пройденданные в моем приложении.

1 Ответ

0 голосов
/ 15 мая 2018

Я не нашел верного способа проверки входящих запросов, но я делаю трюк.Приложение может подписаться на уведомления от устройства (в моем случае это Mi Band 2) и получать некоторые данные с этого устройства через ValueChanged.Однажды я вызываю обработчик ValueChanged в App.xaml.cs после подключения и сопряжения устройства, и это работает для всех приложений, мне не нужно вызывать его снова и снова.

Вот часть 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;
    }

Надеюсь, это кому-нибудь поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...