当前位置:首页 > JavaScript

js实现串口

2026-03-14 03:59:41JavaScript

在JavaScript中实现串口通信

由于浏览器环境的安全限制,JavaScript无法直接访问本地串口设备。需要使用Web Serial API或其他桥接技术实现串口通信。

使用Web Serial API

Web Serial API是现代浏览器提供的实验性功能,允许网页与串行设备通信:

// 请求串口访问权限
async function requestPort() {
  const port = await navigator.serial.requestPort();
  await port.open({ baudRate: 9600 });
  return port;
}

// 写入数据到串口
async function writeToPort(port, data) {
  const writer = port.writable.getWriter();
  await writer.write(data);
  writer.releaseLock();
}

// 从串口读取数据
async function readFromPort(port) {
  const reader = port.readable.getReader();
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    console.log('Received:', value);
  }
  reader.releaseLock();
}

使用Node.js实现串口通信

在Node.js环境中可以使用serialport库:

const SerialPort = require('serialport');
const Readline = require('@serialport/parser-readline');

const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 });
const parser = port.pipe(new Readline({ delimiter: '\n' }));

port.on('open', () => {
  console.log('Serial port opened');
});

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

function writeData(data) {
  port.write(data, err => {
    if (err) return console.log('Error:', err.message);
  });
}

使用WebSocket桥接方案

当无法使用Web Serial API时,可通过后端服务桥接:

  1. 后端使用Node.js/Python等处理实际串口通信
  2. 前端通过WebSocket与后端通信
// 前端WebSocket连接
const socket = new WebSocket('ws://localhost:8080');

socket.onmessage = event => {
  console.log('Received from serial:', event.data);
};

function sendToSerial(data) {
  socket.send(data);
}

注意事项

  • Web Serial API需要HTTPS环境或localhost
  • Chrome/Edge 89+版本支持Web Serial API
  • 需要用户主动授权串口访问权限
  • 不同操作系统串口设备路径不同(Windows: COM3, Linux: /dev/ttyUSB0)

浏览器兼容性解决方案

对于不支持Web Serial API的浏览器:

js实现串口

  1. 开发浏览器扩展程序访问串口
  2. 使用Java Applet或ActiveX控件(已淘汰)
  3. 使用Electron等桌面应用框架包装Web应用

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

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…