UWP Mi Band 2如何从characteriscic

时间:2018-04-19 13:33:57

标签: c# uwp bluetooth-lowenergy

我想通过C#与我的Mi Band 2互动。首先,我想采取电池水平。我已经将我的设备与乐队连接,我采取了一些价值观,但我认为这不是我需要的。 I found uuids of services and characteristics and examples on Java, here

但作者可以处理收到的数据,我不是。

                BluetoothLEDevice bluetoothLEDevice = await BluetoothLEDevice.FromIdAsync(args.Id);

            // Parse Basic Service by UUID
            var result = await bluetoothLEDevice.GetGattServicesForUuidAsync(Guid.Parse("0000fee0-0000-1000-8000-00805f9b34fb"));

            // Parse Battery Info Characteristic of this service
            var characteristic = await result.Services[0].GetCharacteristicsForUuidAsync(Guid.Parse("00000006-0000-3512-2118-0009af100700"));
            GattReadResult gattReadResult = await characteristic.Characteristics[0].ReadValueAsync();
            byte[] data;

            // Read received data to byteArray
            CryptographicBuffer.CopyToByteArray(gattReadResult.Value, out data);


            // Just convert it to string. I Receive HEX Value, but i don't know what it mean. It's not battery percentage.
            // 0F-4F-00-E2-07-04-0E-10-27-11-0C-E2-07-04-0E-13-19-16-0C-64
            Debug.WriteLine(BitConverter.ToString(data));

我在其他论坛中读到了第一个字节(数据[0])中保存的电池百分比,但是数字错误,它不是电池电量。

byte []数据可以保存20个int值。 这些都不是电池百分比

我错了吗?我如何获取电池电量值?

1 个答案:

答案 0 :(得分:1)

我认为你的结果是完全正确的。 我记得像你的结果之类的东西,经过一番摆弄,我想出了这个:

0F-4F-00-E2-07-04-0E-10-27-11-0C-E2-07-04-0E-13-19-16-0C-64 阅读它:

现在状态:0F-4F-00-E2-07-04-0E-10-27-11-0C

0F =?

4F = 79此刻的电量百分比:

00 = 00(00 = STATUS_NORMAL,01 = STATUS_CHARGING)

E2 07 =年份:2018年(交换字节07 E2)

04 =月:4

0E =日:14

10 =小时:16

27 =分钟:39

11 =第二名:17

0C =费用数量:12

上次充电时间:E2-07-04-0E-13-19-16-0C-64

E2 07 =年份:2018年(交换字节07 E2)

4 =月:4

0E =日:14

13 =小时:19

19 =分钟:25

16 =第二名:22

0C =费用数量:12

64 =上次充电时间收费多少:100

再次检查您的设备,看看我的日期/时间是否已经混淆。