웹에서 serial port 연결해서 LOW, HIGH에 따른 처리를 해야하는 일이 생김.
웹 API 중에 requestPort 사용하기로함.

const port = await navigator.serial.requestPort(); //
const info = port.getInfo(); // 연결된 usb 시리얼 정보
// 연결
// 사용하는 시리얼 모듈이 flowControl을 none으로 하라고 함.
await port.open({ baudRate: 9600, flowControl: "none" });
// 읽을 때 사용
const textDecoder = new TextDecoderStream();
const readableStreamClosed = port.readable.pipeTo(textDecoder.writable);
const reader = textDecoder.readable.getReader()
// 명령어 보낼때 사용
const writer = port.writable.getWriter();
while (true) {
try {
// 5초동안 응답이 오지 않으면 에러 던지는 코드
const { value, done } = await reader.read();
if (done) {
break
}
} catch (err) {
// 에러처리
}
}
// 스트림 종료
if (reader) {
reader.cancel();
}
await readableStreamClosed.catch(() => {
/* 에러를 무시한다 */
});
if (writer) {
writer.releaseLock();
}
await port.close();