Статус «Отказано в доступе» позволяет получить характеристики пользовательского сервиса с помощью GetCharacteristicsAsync. - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь получить характеристики пользовательского сервиса BLE.У меня есть библиотека классов NETStandard, использующая NETCore build 17134 для связи Bluetooth.Затем эта библиотека используется в приложении WPF (.NET Framework 4.7.1.). Я могу подключиться к своему периферийному устройству BLE, а также прочитать общую службу, включающую аппаратную версию и т. Д. Однако, когда она переходит кполучить характеристики моего пользовательского сервиса, статус читает AccessDenied и массив характеристик пуст.Любая помощь будет принята с благодарностью.

Тот же код работает, когда он чисто UWP.Однако у меня нет возможности установить разрешения Bluetooth в настольном приложении, как в UWP.Я пытался работать от имени администратора и выполнять обходной путь, используя AppID / запись в реестре.Кажется, это не сработало, но, возможно, я просто сделал что-то не так.

Это известная проблема?Я читал, что со времени первоначального Обновления Создателя (15xxx) произошла некоторая регрессия, но все темы кажутся годовалыми.

    protected async override Task<IList<ICharacteristic>> GetCharacteristicsNativeAsync()
    {
        var accessRequestResponse = await _nativeService.RequestAccessAsync();

        // Returns Allowed
        if (accessRequestResponse != Windows.Devices.Enumeration.DeviceAccessStatus.Allowed)
        {
            throw new Exception("Access to service " + _nativeService.Uuid.ToString() + " was disallowed w/ response: " + accessRequestResponse);
        }

        var allCharacteristics = await _nativeService.GetCharacteristicsAsync(Windows.Devices.Bluetooth.BluetoothCacheMode.Uncached);
        // Status: AccessDenied
        var status = allCharacteristics.Status;

        // No error
        var err = allCharacteristics.ProtocolError;
        var nativeChars = allCharacteristics.Characteristics;
        var charList = new List<ICharacteristic>();

        foreach (var nativeChar in nativeChars)
        {
            var characteristic = new Characteristic(nativeChar, this);
            charList.Add(characteristic);
        }

        return charList;
    }

Любая помощь будет принята с благодарностью!

...