Flutter Blue读取特征问题

时间:2019-06-18 11:18:56

标签: flutter

我使用了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,则可能会发生。)

3 个答案:

答案 0 :(得分:0)

device.readCharacteristic(c).then((value)是一个异步调用,其结果将在以后处理。这可能会造成一种情况,当您没有读取任何一对返回值时,您将它们称为一对读取,读取需要同步进行。尝试用forEach替换所有for (final x in iterable),然后可以在每个awaitreadCharacteristic,以便它们同步发生。

答案 1 :(得分:0)

请勿同时执行读写操作。我使用互斥锁概念来解决此问题。 我建议在任何时间仅执行一次写入或读取。同步读写操作

答案 2 :(得分:0)

你可以这样做:

if(isReading == false){
 isReading = true;
 await bluetoothCharacteristic.read();
 isReading = false;
}

它会阻止你同时阅读