C# 从 BT LE 设备转换字节数组

C# Converting a byte array from BT LE device

我正在使用 Nordic Thingy:52 在 UWP 应用程序中记录环境数据,并按照 Windows 通用示例应用程序中的示例连接到 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);
}

检查字节数组的内容时,您可以看到已收到一些内容,但在了解如何将此数组转换为有用数据时,我卡住了。

Code to read the byte array

Data specification for data sent by the device

document可以看出压力数据的定义:

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 Class”并注意 little-endian/big-endian。