You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用navigator.serial串口通信时存在固定1秒读取延迟问题

Chrome下Web Serial API读取Arduino数据固定1秒延迟问题

近期在Chrome浏览器中测试Web Serial API,实现与Arduino开发板的基础通信时,发现串口读取数据存在明显延迟,该问题仅在部分测试Demo中出现,其余Demo运行无异常。

  • 无延迟表现的Demo读取数据几乎即时响应,效果如下:
    无延迟效果演示
  • 存在异常的Demo读取数据有明显延迟(注:写入操作无延迟,键盘输入字符的瞬间即可触发写入),效果如下:
    延迟效果演示

我曾对照无延迟Demo的开源源码比对自身实现逻辑,二者逻辑几乎完全一致,但自身代码运行表现和存在存在延迟的异常Demo一致。
自身核心实现代码如下:

this.port = await navigator.serial.requestPort({ filters });

await this.port.open({ baudRate: 115200, bufferSize: 255, dataBits: 8, flowControl: 'none', parity: 'none', stopBits: 1 });
this.open = true;
this.monitor();

private monitor = async () => {
    const dataEndFlag = new Uint8Array([4, 3]);
    while (this.open && this.port?.readable) {
        this.open = true;
        const reader = this.port.readable.getReader();
        try {
            let data: Uint8Array = new Uint8Array([]);
            while (this.open) {
                const { value, done } = await reader.read();
                if (done) {
                    this.open = false;
                    break;
                }
                if (value) {
                    data = Uint8Array.of(...data, ...value);
                }
                if (data.slice(-2).every((val, idx) => val === dataEndFlag[idx])) {
                    const decoded = this.decoder.decode(data);
                    this.messages.push(decoded);
                    data = new Uint8Array([]);
                }
            }
        } catch {
        }
    }
}

public write = async (data: string) => {
    if (this.port?.writable) {
        const writer = this.port.writable.getWriter();
        await writer.write(this.encoder.encode(data));
        writer.releaseLock();
    }
}

调试过程中观测到,代码执行到await reader.read();语句时会出现短暂阻塞。
该问题可稳定复现,复现环境如下:

  • 操作系统:Windows 10、macOS Monterey
  • 硬件:通过USB连接的Arduino Pro Micro开发板

问题更新:经过增加详细日志的补充测试,确认每次执行写入操作到读取到返回数据的时间间隔固定为1秒,无波动。

是否有其他开发者遇到过相同问题?

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:57:16