js 实现串口
使用 Web Serial API 实现串口通信
Web Serial API 是现代浏览器提供的 JavaScript API,允许网页与串行设备(如 Arduino、传感器等)直接通信。以下为具体实现方法:
检查浏览器支持
if (!navigator.serial) {
console.error('Web Serial API 不支持当前浏览器');
}
请求串口权限并打开端口
const port = await navigator.serial.requestPort();
await port.open({ baudRate: 9600 }); // 根据设备设置波特率
写入数据到串口
const writer = port.writable.getWriter();
const data = new Uint8Array([0x48, 0x65, 0x6C, 0x6C, 0x6F]); // "Hello" 的二进制数据
await writer.write(data);
writer.releaseLock();
从串口读取数据

const reader = port.readable.getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
console.log('收到数据:', new TextDecoder().decode(value));
}
关闭串口连接
await port.close();
Node.js 环境实现方案
在 Node.js 中可通过 serialport 库实现串口通信:
安装依赖

npm install serialport
基本读写示例
const { SerialPort } = require('serialport');
const port = new SerialPort({
path: '/dev/ttyUSB0', // 设备路径
baudRate: 9600
});
port.on('data', (data) => {
console.log('收到数据:', data.toString());
});
port.write('AT\\r\\n', (err) => {
if (err) console.error('写入错误:', err);
});
注意事项
- 浏览器环境下需要 HTTPS 协议(localhost 除外)
- 用户必须主动触发权限请求(如点击事件)
- 不同操作系统设备路径格式不同:
- Windows:
COM3 - Linux:
/dev/ttyUSB0 - macOS:
/dev/cu.usbmodem1411
- Windows:
高级功能实现
自定义解析器
const { ReadlineParser } = require('@serialport/parser-readline');
const parser = port.pipe(new ReadlineParser({ delimiter: '\\r\\n' }));
parser.on('data', console.log);
错误处理
port.on('error', (err) => {
console.error('端口错误:', err);
});
列出可用串口
const { SerialPort } = require('serialport');
SerialPort.list().then(ports => {
ports.forEach(port => console.log(port.path));
});
以上方法覆盖了从浏览器到服务端的常见串口通信场景,可根据实际需求选择对应方案。






