C # Преобразование байтового массива с устройства BT LE - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Nordic Thingy: 52 для записи данных об окружающей среде в приложении UWP и следую примеру в приложениях Windows Universal Sample для подключения к устройствам BT LE.

До сих пор я был в состоянии подключиться к устройству для получения служебной и характеристической информации, но при получении фактических данных от датчиков мне не удается преобразовать массив байтов в пригодные для использования данные.

async void Characteristic_ValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args)
{
    // An Indicate or Notify reported that the value has changed.
    var reader = DataReader.FromBuffer(args.CharacteristicValue);
    byte[] input = new byte[reader.UnconsumedBufferLength];
    reader.ReadBytes(input);
}

При проверке содержимого байтового массива вы можете увидеть, что что-то получено, но я застрял, когда узнал, как преобразовать этот массив в полезные данные.

Коддля чтения байтового массива

Спецификация данных для данных, отправляемых устройством

1 Ответ

0 голосов
/ 05 декабря 2018

Из документа мы можем видеть определение данных давления:

enter image description here

5 байтов содержит один int32 для целой частии один uint8 для десятичной части.Uint - hPa.

Вы получите строку, подобную этой:

        Int32 pressureInteger = BitConverter.ToInt32(input, 0); //252-3-0-0
        string pressureString = pressureInteger.ToString() + "." + input[4].ToString() + "hPa";

Строка будет "1020.28hPa"

Дополнительная ссылка " Класс BitConverter"и обратите внимание на порядок байтов / порядок байтов.

...