首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从BLE制造商数据抖动中获取期望值

如何从BLE制造商数据抖动中获取期望值
EN

Stack Overflow用户
提问于 2020-08-25 14:09:20
回答 1查看 802关注 0票数 0

我是flutter的新手,我正在开发一款从BLE信标读取数据的应用程序。我已经扫描了设备,并获得了{256:[0,0,0,16,1,57,33,18,0,0,154,10,0,0,94,0]}格式的制造商数据

设备制造商告诉我设备数据如下:

KCBAdvDataManufacturerData = <..。。。。。。。。。。。。。。be 21 01 00 50 08 00 00 5e ..>

UUID - kCBAdvDataManufacturerData数据包包含传感器数据,如下所示:

字节索引8- 11 =压力32位值

字节索引12 - 15 =温度32位值

字节索引16 =电池电量百分比

我完全不知道在Dart中我如何才能实现它

代码语言:javascript
运行
复制
{256:[0,0,0,16,1,57,33,18,0,0,154,10,0,0,94,0]}

字节索引8- 11 =压力32位值

字节索引12 - 15 =温度32位值

字节索引16 =电池电量百分比

然后以人类可以理解的形式,这里的温度是C,压强,PSI,电池是%。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 14:59:31

有一个字节列表,因此您可以使用https://api.dart.dev/stable/2.9.1/dart-core/List/sublist.html从该列表中获取子列表

该子列表可以从4个字节转换为压力和温度值的带符号整数:

Convert 4 byte into a signed integer

我不确定您得到的索引值是否正确。我假设数据是little endian格式的,所以我对数据的假设是:

压力= 33,18,0,0 = 4641 (您期望的值约为46.41psi吗?)

温度= 154,10,0,0 = 2714 (您的期望值是否约为27.14℃?)

电池= 94 = 94 (您的期望值是94%吗?)

此操作可能如下所示:

代码语言:javascript
运行
复制
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));
}

给出了输出:

代码语言:javascript
运行
复制
4641
2714
94
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63572951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档