![](/img/trans.png)
[英]How to get orignal manufacturer data in flutter BLE using flutter_blue
[英]How to get desired values from BLE manufacturer data flutter
我是 Flutter 的新手,我正在開發一個從 BLE 信標讀取數據的應用程序。 我已掃描設備並將制造商數據設為{256:[0,0,0,16,1,57,33,18,0,0,154,10,0,0,94,0]}
設備制造商告訴我設備數據如下:
KCBAdvDataManufacturerData = <.. .. .. .. .. .. .. .. 是 21 01 00 50 08 00 00 5e ..>
UUID - kCBAdvDataManufacturerData 數據包包含傳感器數據,如下所示:
字節索引 8 – 11 = 壓力 32 位值
字節索引 12 – 15 = 溫度 32 位值
字節索引 16 = 電池電量百分比
我完全不知道在 Dart 中如何實現它
{256:[0,0,0,16,1,57,33,18,0,0,154,10,0,0,94,0]}
至
字節索引 8 – 11 = 壓力 32 位值
字節索引 12 – 15 = 溫度 32 位值
字節索引 16 = 電池電量百分比
然后以人類可以理解的形式,這里的溫度以 PSI 的 C 壓力為單位,電池以 % 為單位。
有一個字節列表,因此您可以使用https://api.dart.dev/stable/2.9.1/dart-core/List/sublist.html從該列表中獲取子列表
該子列表可以從 4 個字節轉換為壓力和溫度值的有符號整數:
我不確定您獲得的索引值是否正確。 我假設數據是小端格式,所以我對數據的假設是:
壓力 = [33,18,0,0] = 4641(您是否期望值約為 46.41psi?)
溫度 = [154,10,0,0] = 2714(您期望的值約為 27.14c 嗎?)
電池 = [94] = 94(您期望值為 94% 嗎?)
這可能會像下面這樣完成:
import 'dart:typed_data';
var manufacturerData = Uint8List.fromList([0,0,0,16,1,57,33,18,0,0,154,10,0,0,94,0]);
var pressure = ByteData.sublistView(manufacturerData, 6, 10);
var temperature = ByteData.sublistView(manufacturerData, 10, 14);
var battery = ByteData.sublistView(manufacturerData, 14, 15);
main() {
print(pressure.getUint32(0, Endian.little));
print(temperature.getUint32(0, Endian.little));
print(battery.getUint8(0));
}
給我輸出:
4641
2714
94
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.