我使用flutter blue插件读取特征值,但读取过程总是出现错误
readCharacteristics() {
device.discoverServices().then((services) {
services.forEach((_service) {
_service.characteristics.forEach((c) {
device.readCharacteristic(c).then((value) {
print('value is $value');
});
});
});
});
}
我期望输出是特征值,但是我得到了这个错误==>未处理的异常: PlatformException(read_characteristic_error,未知原因,如果在最后一次读取完成之前调用了readCharacteristic,则可能会发生。,null)
发布于 2019-07-06 20:23:35
device.readCharacteristic(c).then((value)
是一个异步调用,其结果将在将来处理。这可能会造成这样一种情况:当两个读操作都没有返回时,需要同步进行读操作。尝试用for (final x in iterable)
替换所有的forEach
,然后您可以在每个readCharacteristic
上执行await
,以便它们同步发生。
发布于 2020-09-05 14:48:43
请勿同时执行读写操作。我使用互斥概念来解决这个问题。我建议在任何时候只执行一次写入或读取。同步读写操作
发布于 2021-05-26 21:35:53
你可以这样做:
if(isReading == false){
isReading = true;
await bluetoothCharacteristic.read();
isReading = false;
}
它会阻止你同时阅读
https://stackoverflow.com/questions/56647937
复制