C# Преобразование байтового массива с устройства BT LE
Я использую 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 ответ
Из документа мы можем увидеть определение данных давления:
https://stackru.com/images/bcd20a5 b4f8689873888826af135733652a349ad.png
5 байтов содержат один int32 для целочисленной части и один uint8 для десятичной части. Уинт это гПа.
Вы получаете строку как это:
Int32 pressureInteger = BitConverter.ToInt32(input, 0); //252-3-0-0
string pressureString = pressureInteger.ToString() + "." + input[4].ToString() + "hPa";
Строка будет "1020.28hPa"
Дополнительная ссылка " Класс BitConverter " и примечание к порядку байтов с прямым порядком байтов.