网络连续剧 api 可读流代码无法正常工作

web serial api readable stream code not work well

 while (true) {
    let { value, done } = await reader.read();
    if (done) {
      // |reader| has been canceled.
      console.log("brack");
      break;
    }
    console.log(value);
    console.log()
  }
} catch (error) {
  // Handle |error|...
} finally {
  reader.releaseLock();
  console.log("f1");
}

}

当我从串口读取数据时,我的整个数据都被完美接收,但是“done”变量的值从未改变它仍然是假的,代码在这个阶段停止“让{值,完成} = 等待 reader.read();".

除非串行端口遇到错误,否则您将始终能够读取更多数据,因此永远不会将 done 设置为 true。如果您的程序已经读取了它打算读取的所有数据,那么它应该停止调用 read() 直到它想要接收更多数据。请注意,如果设备发送的数据多于打开端口时指定的缓冲区大小,如果您的应用程序未调用 read() 将其从缓冲区中拉出,则此数据可能会丢失。

也在这里回答: Web Serial Api ->{value,done} -> the done is not getting true even after reading the whole data sent by the serial port device

我只在调用 reader.cancel() 后观察到 done=true

你可以在我的 https://webserial.io 的源代码中看到它:

https://github.com/williamkapke/webserial/blob/8ae91a2fd978eede59182c2a4b28725c12c932a8/src/stores/connection.js#L107