Web Serial API - 自动读取

我正在使用 Chrome Web Serial API,当我单击按钮并手动选择端口时,它工作正常。现在我想在打开页面时自动选择端口(COM1)。我不想单击按钮并选择端口。另外,当我重新加载页面时,我失去了与端口的连接。有谁知道我该怎么做?提前致谢!

这是我的代码:

    "use strict";

    class SerialScaleController {

        constructor() {

            this.encoder = new TextEncoder();

            this.decoder = new TextDecoder();

        }

        async init() {

            if ('serial' in navigator) {

                try {

                    console.log(navigator)

                    const port = await navigator.serial.requestPort();

                    await port.open({ baudRate: 9600 });

                    this.reader = port.readable.getReader();

                    let signals = await port.getSignals();

                }

                catch (err) {

                    console.error('There was an error opening the serial port:', err);

                }

            }

            else {

                console.error('Web serial doesn\'t seem to be enabled in your browser. Try enabling it by visiting:');

                console.error('chrome://flags/#enable-experimental-web-platform-features');

                console.error('opera://flags/#enable-experimental-web-platform-features');

                console.error('edge://flags/#enable-experimental-web-platform-features');

            }

        }

        async read() {

            try {

                const readerData = await this.reader.read();

                console.log(readerData)

                return this.decoder.decode(readerData.value);

            }

            catch (err) {

                const errorMessage = `error reading data: ${err}`;

                console.error(errorMessage);

                return errorMessage;

            }

        }

    }



翻翻过去那场雪
浏览 443回答 3
3回答

肥皂起泡泡

如果用户已经通过 requestPort() 批准了您一次,那么将来您可以使用 getPorts() 来获取您以前拥有的端口数组,如下所示。// CanPrompt is 1 if being called from user button click etc// Or 0 if calling from serial.onconnect or page load checking for devicevar port = null;if (CanPrompt) {    port = await navigator.serial.requestPort();} else {    port = await navigator.serial.getPorts();    if ((port !== null) && (Array.isArray(port)) && (port.length > 0)) {        port = port[0];    } else return;}await port.open({ baudRate: 19200 });

繁花不似锦

我认为网络连续剧的一项要求是,除了在具有 TLS 的网站上发布之外,还需要用户交互以确保安全。

九州编程

您是否考虑过使用 cookie 作为“持久”设置?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript