Привет, пользователи, У меня есть специфическая проблема с 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) был красным, но значение странное.
Буду признателен за каждый ответ. Спасибо.