我想通过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值。 这些都不是电池百分比。
我错了吗?我如何获取电池电量值?
答案 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
再次检查您的设备,看看我的日期/时间是否已经混淆。