check port.readable for errors

This commit is contained in:
Sergey Yarkov 2022-11-01 00:04:05 +03:00
parent d870a5cc03
commit 282daf7739
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F

View File

@ -14,7 +14,10 @@ class Application {
this.serialPortHandler = new SerialPortHandler( this.serialPortHandler = new SerialPortHandler(
{ baudRate: 9600 }, { baudRate: 9600 },
() => console.log('Device connected.'), () => console.log('Device connected.'),
() => console.log('Device disconnected.') () => {
console.log('Device disconnected.');
this.#disconnectHandler();
}
); );
/** /**
@ -134,23 +137,29 @@ class SerialPortHandler {
} }
async read() { async read() {
const reader = this.port.readable.getReader(); while (this.port.readable) {
let chunks = ''; const reader = this.port.readable.getReader();
let chunks = '';
while (true) { try {
const { value, done } = await reader.read(); while (true) {
const decoded = this.decoder.decode(value); const { value, done } = await reader.read();
const decoded = this.decoder.decode(value);
chunks += decoded; chunks += decoded;
if (done || decoded.includes(EOT)) { if (done || decoded.includes(EOT)) {
console.log('Reading done.'); console.log('Reading done.');
reader.releaseLock(); reader.releaseLock();
break; break;
}
}
return chunks;
} catch (error) {
console.error(error);
throw error;
} }
} }
return chunks;
} }
#setupListeners() { #setupListeners() {