gpt4 book ai didi

bluetooth - FlutterBlue 特性

转载 作者:IT王子 更新时间:2023-10-29 07:22:58 26 4
gpt4 key购买 nike

我正在开发一个连接到健身 watch 的蓝牙应用程序。这是我第一次使用蓝牙。我设法使用出色的 FlutterBlue 将我的应用程序与设备连接起来图书馆。

但是我无法理解我从阅读中获得的结果。这是我阅读特征的方式:

_readCharacteristic(BluetoothCharacteristic c) async {
var results = await widget.device.readCharacteristic(c);
print("${results.toList()}");
//setState(() {});
}

这是结果:

[7, 133, 0, 0, 1, 0, 0, 124, 92, 1]

我不知道这些数字是什么意思,也不知道我应该用它们做什么。

最佳答案

来自documentation :

var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List<int> value = await device.readCharacteristic(c);
print(value);
}

// Writes to a characteristic
await device.writeCharacteristic(c, [0x12, 0x34])

我们可以看到该库适用于 List(int) 类型,并且它发送/接收“32 位”值。

很可能发送的是字节对,因此 16 位值在列表中表示为数字;这些是 characters .这意味着您可以发送带有 utf8 表示的字符。

在上面的例子中,特征是写入 0x12,然后是 0x34。在指向 ascii 字符表的链接中,这转换为“(Device Control 2) (4)”。

将它们解码为字符 (UTF8) 并在将它们发送回 watch 时对它们进行编码是您的工作。这是 watch 软件的要求,它可以根据接收到的值响应某些特征写入。

您可能需要深入研究您正在使用的 watch 的文档/蓝牙规范。

查看 dart:convert 库的 UTF8Decoder 类。它应该可以帮助您将其翻译成人类可读的文本。如果没有,您将不得不进行一些挖掘。

String decoded = UTF8Decoder().convert(value) // value == List<int>, Uint8List, etc.
print(decoded)

关于bluetooth - FlutterBlue 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54654882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com