当前位置:首页 > 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 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…