web serial api readable stream code not work well

1k views Asked by At
 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");
}

}

when I read data from the serial port, my whole data is perfectly received, but the value of the "done" variable never changes it remains false and the code is stop on this stage " let { value, done } = await the reader.read();".

1

There are 1 answers

6
Reilly Grant On

Unless the serial port encounters an error you will always be able to read more data and so done is never set to true. If your program has read all the data it intends to then it should stop calling read() until it wants to receive more data. Note, if the device sends more data than the buffer size specified when opening the port this data may be lost if your application isn't calling read() to pull it out of the buffer.