WriteClientCharacteristicConfigurationDescriptorAsync не работает в UWP - PullRequest
0 голосов
/ 30 мая 2018

Мое выбранное свойство характерных значений возвращает Indicate, но все еще WriteClientCharacteristicConfigurationDescriptorAsync (cccdValue) не возвращает состояние успеха.

Это фрагмент кода: status = await selectedCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync. Cccd ()устройство для включения индикации или уведомления

status = await selectedCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(cccdValue);//writes cccd to the ble device to enable indication or notification

 if (status == GattCommunicationStatus.Success)
                    {
                        AddValueChangedHandler();
                        rootPage.NotifyUser("Successfully subscribed for value changes", NotifyType.StatusMessage);
                    }
                    else
                    {
                        rootPage.NotifyUser($"Error registering for value changes: {status}", NotifyType.ErrorMessage);
                    }

Оно всегда переходит в другое состояние. Я установил свойство Indicate True, но оно по-прежнему не работает.

Пожалуйста, помогите, есть предложения?Спасибо

1 Ответ

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

Поддерживает ли характеристика Запись?

GattCharacteristicProperties properties = characteristic.CharacteristicProperties;
            if (properties.HasFlag(GattCharacteristicProperties.Write) || properties.HasFlag(GattCharacteristicProperties.WriteWithoutResponse))
            {
               //writing is supported..
            } 

Если это так:

MSDN

Существует четыре статуса:

  • Доступ запрещен
  • Устройство недоступно
  • Успешно
  • Ошибка протокола

Поскольку вы не опубликовали статус, я могу 'Я не могу дать вам точный ответ ... Если это ошибка протокола, вам нужно предоставить больше информации об устройстве.Попробуйте это:

  1. Доступ запрещен: повторите попытку, получив характеристику без использования кэша Bluetooth

            var characteristics = await selectedService.GetCharacteristicsForUuidAsync(characteristicUuid, BluetoothCacheMode.Uncached);
            selectedCharacteristic = characteristics[0];
            status = await selectedCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(cccdValue);
    

Затем повторите запись.

Устройство недоступно: соединение было потеряно.Либо устройство находится слишком далеко, либо вам необходимо повторно подключиться.Восстановите объект устройства и повторите попытку.

       BluetoothLEDevice device = await BluetoothLEDevice.FromIdAsync(deviceId); 
        .....
...