当前位置:首页 > JavaScript

js 实现串口

2026-03-14 17:37:08JavaScript

使用 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();

从串口读取数据

js 实现串口

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 库实现串口通信:

安装依赖

js 实现串口

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

高级功能实现

自定义解析器

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));
});

以上方法覆盖了从浏览器到服务端的常见串口通信场景,可根据实际需求选择对应方案。

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

相关文章

js实现轮播图

js实现轮播图

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

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现授权

js实现授权

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