Skip to content

Commit 0f2efc1

Browse files
committed
Fix bug. Go to async!
1 parent b48cb89 commit 0f2efc1

File tree

1 file changed

+32
-33
lines changed

1 file changed

+32
-33
lines changed

src/main.ts

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,44 +24,43 @@ Dom.serialForm.submit = (formData) => {
2424

2525
let send: ((bytest: number[]) => Promise<void>) | undefined = undefined;
2626

27-
const start = (serialOptions: SerialOptions, mode: ModeStrategy) => {
27+
const start = async (serialOptions: SerialOptions, mode: ModeStrategy) => {
2828
Dom.clearError();
29-
serial.requestPort().then((serialPort: SerialPort) => {
30-
console.log('serialPort', serialPort);
31-
serialPort.open(serialOptions).then(async () => {
32-
Dom.serialForm.setFieldsetDisabled(true);
33-
const writer = serialPort.writable?.getWriter();
34-
if (writer) {
35-
send = async (bytes: number[]) => {
36-
const rawFrame = mode.send(bytes);
37-
await writer.write(rawFrame);
38-
}
39-
} else {
40-
console.error('Port is not writable!');
41-
}
29+
Dom.serialForm.setFieldsetDisabled(true);
30+
try {
31+
const serialPort: SerialPort = await serial.requestPort();
32+
await serialPort.open(serialOptions);
4233

43-
while (serialPort.readable) {
44-
const reader: ReadableStreamDefaultReader<Uint8Array> = serialPort.readable.getReader();
45-
try {
46-
while (true) {
47-
const { value, done } = await reader.read();
48-
if (done) {
49-
break;
50-
}
51-
mode.receive(value);
34+
send = async (bytes: number[]) => {
35+
const rawFrame = mode.send(bytes);
36+
const writer = serialPort.writable!.getWriter();
37+
await writer.write(rawFrame);
38+
writer.releaseLock();
39+
}
40+
41+
while (serialPort.readable) {
42+
const reader: ReadableStreamDefaultReader<Uint8Array> = serialPort.readable.getReader();
43+
try {
44+
while (true) {
45+
const { value, done } = await reader.read();
46+
if (done) {
47+
break;
5248
}
53-
} catch (error) {
54-
reportError(error);
55-
} finally {
56-
reader.releaseLock();
49+
mode.receive(value);
5750
}
51+
} catch (error) {
52+
reportError(error);
53+
} finally {
54+
reader.releaseLock();
5855
}
59-
writer?.releaseLock();
60-
send = undefined;
61-
await serialPort.close();
62-
Dom.sendForm.setFieldsetDisabled(false);
63-
}, reportError);
64-
}, console.warn);
56+
}
57+
send = undefined;
58+
await serialPort.close();
59+
} catch (e: any) {
60+
Dom.reportError(e.message || e.toString());
61+
} finally {
62+
Dom.serialForm.setFieldsetDisabled(false);
63+
}
6564
};
6665

6766
[...FunctionCodes.descriptions.keys()].forEach((code: number) => Dom.addFunctionCodeListOption(code));

0 commit comments

Comments
 (0)