当前位置:首页 > JavaScript

js实现串口

2026-04-05 22:06:50JavaScript

使用Web Serial API实现串口通信

Web Serial API是现代浏览器提供的JavaScript接口,允许网页与串行设备(如Arduino、传感器等)直接通信。以下是在浏览器中实现串口通信的方法:

检查浏览器兼容性 确保浏览器支持Web Serial API,Chrome/Edge 89+、Opera 76+等现代浏览器已支持。可通过以下代码检测:

if (!"serial" in navigator) {
  console.error("Web Serial API not supported");
}

请求串口访问权限 需要用户主动触发(如点击按钮)才能请求设备访问权限:

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

打开并配置串口 设置波特率等参数(常用9600/115200):

await port.open({ baudRate: 9600 });
const writer = port.writable.getWriter();
const reader = port.readable.getReader();

数据发送 使用TextEncoder转换字符串为Uint8Array:

const encoder = new TextEncoder();
const data = encoder.encode("Hello Serial\\n");
await writer.write(data);

数据接收 通过循环读取数据流:

while (true) {
  const { value, done } = await reader.read();
  if (done) break;
  console.log(new TextDecoder().decode(value));
}

错误处理与关闭 添加必要的错误处理和资源释放:

try {
  // 通信代码
} catch (err) {
  console.error("Serial error:", err);
} finally {
  reader.releaseLock();
  writer.releaseLock();
  await port.close();
}

Node.js环境下的串口通信

对于Node.js后端应用,可使用serialport库:

安装依赖

npm install serialport

基本使用示例

const { SerialPort } = require('serialport');

const port = new SerialPort({
  path: 'COM3',
  baudRate: 9600
});

port.write('Hello Node\\n', (err) => {
  if (err) return console.log('Write error:', err);
});

port.on('data', (data) => {
  console.log('Received:', data.toString());
});

高级特性

  • 自动检测可用串口:

    const { SerialPort } = require('serialport');
    SerialPort.list().then(ports => {
    ports.forEach(port => console.log(port.path));
    });
  • 使用解析器处理数据流:

    js实现串口

    const { ReadlineParser } = require('@serialport/parser-readline');
    const parser = port.pipe(new ReadlineParser({ delimiter: '\\r\\n' }));
    parser.on('data', console.log);

注意事项

  1. 浏览器环境需要HTTPS协议(localhost除外)
  2. 用户必须主动交互才能触发设备选择
  3. 不同操作系统端口名称不同(Windows: COM3, Linux: /dev/ttyUSB0)
  4. 波特率等参数需与设备端严格匹配
  5. 大量数据传输时建议使用缓冲区管理

以上方法覆盖了从浏览器到Node.js环境的串口通信实现,开发者可根据具体运行环境选择对应方案。

标签: 串口js
分享给朋友:

相关文章

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…