我正在查看文档:https://pub.dev/documentation/flutter_blue/latest/,下面的代码显示在文档中:
// Reads all characteristics
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List<int> value = await c.read();
print(value);
}
// Writes to a characteristic
await c.write([0x12, 0x34])我理解,为了阅读,我们需要循环所有的特点,并阅读每一个。写字呢?
如果c是循环中的迭代器,我们如何在循环外部调用它。我假设写方法中的1×2矩阵是在服务中写入特征的位置。我怀疑这个位置是否应该被硬编码。我只是有点困惑,我很想澄清一下。任何解释都将不胜感激!谢谢!
发布于 2021-01-16 18:30:29
BLE有几种类型的特性:
。
现在,在你的情况下,在我看来,一般来说,保持对你的特性的严格引用是一个很好的做法,因为在应用程序运行过程中,这些特性不会改变。您可以随时查询它们,但我认为最好是在连接到设备之后查询它们,检查特征类型(读、写、通知),并根据设备规格确定要用于哪些特性:读、写、通知。
在写的另一个注意事项,BLE不允许您写入一个数据块,指示数据包大小的值称为MTU,基于MTU,您将不得不在相同长度的数据包中拆分原始数据。MTU因设备、操作系统和BLE版本的不同而不同,所以在编写之前检查它是一种很好的做法(您也可以将它存储起来供以后使用)。
最后请注意,您不必对所有特性进行写/读,您应该始终使用BLE设备规范中描述的特性。
https://stackoverflow.com/questions/65752285
复制相似问题