javascript浏览器端串口通信依赖web serial api,需用户手势触发、https/localhost环境及chromium系浏览器(chrome 89+等)支持;流程为检查api→requestport选设备→open配置波特率→用readablestream/writablestream读写uint8array→textdecoder/encoder编解码→处理粘包与异常→显式close。
javascript 浏览器端串口通信靠的是 web serial api,不是原生 js 能直接操作硬件,而是浏览器提供的安全接口。它只在用户主动触发、https 或 localhost 环境、chromium 系列浏览器(chrome 89+、edge 110+、opera 75+)中可用。
确认支持与触发权限
必须由用户点击按钮等手势启动,不能自动运行。先检查 API 是否可用:
- 用
"serial" in navigator判断浏览器是否支持 - 调用
navigator.serial.requestPort()弹出设备选择框,用户手动选 Arduino、CH340 或 CP2102 等 USB 串口设备 - 不支持 COM3、/dev/ttyUSB0 这类系统路径直连,也不支持 Windows/Linux 的传统串口号匹配
打开串口并配置参数
选中设备后,需显式打开并设置通信参数,常见配置项包括:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
baudRate:必须与设备一致(如 9600、115200),错则收不到数据 - 可选配置:
dataBits(默认 8)、stopBits(默认 1)、parity(默认 "none") - 调用
await port.open({ baudRate: 115200 })建立连接
读写数据要走流式处理
串口数据是字节流,不能直接传字符串或监听事件,得用 ReadableStream 和 WritableStream:
- 读取:用
port.readable.getReader()获取 reader,循环await reader.read()得到Uint8Array,再用TextDecoder转成文本 - 发送:用
port.writable.getWriter()获取 writer,发送前必须用TextEncoder编码,例如encoder.encode("AT\r\n") - 注意粘包问题——串口无天然消息边界,需按协议解析(如以
\n分隔、固定帧长或加起始符)
异常处理与连接维护
串口不稳定,断开、权限丢失、设备拔插都可能中断通信:
- 所有异步操作(open、read、write)都要包在
try/catch中 - 监听
port.onconnect和port.ondisconnect事件,便于响应状态变化 - 通信结束务必调用
await port.close(),否则下次requestPort可能失败 - Web Serial API 不提供自动重连,需自行实现重试逻辑(比如按钮点击重连)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










