Уровень заряда аккумулятора Bluetooth BLE - C # - PullRequest
0 голосов
/ 13 июня 2018

Привет, пользователи, У меня есть специфическая проблема с API Bluetooth BLE в Windows 10. В данный момент я программирую инструмент на C # (Visual Studio), который подключается к данному BLE-устройству.Однако соединение работает идеально, и я могу прочитать ServiceUUIDs и CharacterUUIDs .

Основная проблема заключается в том, что после того, как я пытаюсь прочитать значение символа, его всегдавозвращает мне 00. Я слышал, что реализация уведомления изменит это.Я следовал инструкциям от: https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/gatt-client, но они не помогли мне много (=> тот же результат);

(Вот спецификации от bluetooth.com: https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.battery_level.xml)

Вот мой код: // подключиться к BluetoothDevice var device = await BluetoothLEDevice.FromIdAsync (address);

        //get UUID of Services
        var services = await device.GetGattServicesAsync();
        if (services != null)
        {
            foreach (var servicesID in services.Services)
            {

                //if there is a service thats same like the Battery Service
                if (servicesID.Uuid.ToString() == BluetoothBLE.Constants.BATTERY_SERVICE)
                {
                    //updateServiceList is like a console logging in my tool
                    updateServiceList($"Service: {servicesID.Uuid}");

                    var characteristics = await servicesID.GetCharacteristicsAsync();
                    foreach (var character in characteristics.Characteristics)
                    {
                        if (Constants.BATTERY_LEVEL == character.Uuid.ToString())
                        {

                            updateServiceList("C - UUID: "+ character.Uuid.ToString());
                            GattReadResult result = await character.ReadValueAsync();
                            if (result.Status == GattCommunicationStatus.Success)
                            {
                               var reader = DataReader.FromBuffer(result.Value);
                               byte[] input = new byte[reader.UnconsumedBufferLength];
                               reader.ReadBytes(input);
                               System.Diagnostics.Debug.WriteLine(BitConverter.ToString(input));


                            }







                        }
                        }

                }

Поэтому после выполнения моего кода система регистрирует меня как «00». CharacterUUID для уровня заряда батареи (0x2A19, с https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.battery_level.xml) был красным, но значение странное.

Буду признателен за каждый ответ. Спасибо.

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