0

0

javascript怎样操作串口设备?_javascript的Web Serial API如何使用?

夢幻星辰

夢幻星辰

发布时间:2025-12-23 18:07:17

|

699人浏览过

|

来源于php中文网

原创

web serial api 允许现代浏览器(chrome 89+等)在用户授权下与串口设备通信,需https/localhost、用户手势触发、手动选择设备,流程为请求端口→打开配置→获取读写流→处理数据,注意粘包解析与异常捕获。

javascript怎样操作串口设备?_javascript的web serial api如何使用?

JavaScript 本身不能直接操作串口设备,但现代浏览器(Chrome 89+、Edge 110+、Opera 75+)支持 Web Serial API,允许网页在用户授权下与串口设备通信。它不是纯 JS 底层能力,而是受严格安全限制的异步 Web API。

前提条件和限制

Web Serial API 只能在安全上下文(HTTPS 或 localhost)中使用;必须由用户手势(如点击按钮)触发请求权限;不支持后台运行或自动连接;仅适用于有 USB/UART 转串口芯片(如 CH340、CP2102、FTDI)的设备。

  • 需要用户主动点击“连接串口”按钮才能调用 navigator.serial.requestPort()
  • 浏览器会弹出设备选择框,用户手动选中目标串口(如 “Arduino Uno”、“USB Serial Port”)
  • 不支持 Windows 的 COMx 名称直连,也不支持 Linux 的 /dev/ttyUSB0 字符串匹配

基本连接与读写流程

典型流程是:请求端口 → 打开端口 → 配置参数 → 获取读写流 → 处理数据。

  • 获取端口:const port = await navigator.serial.requestPort();
  • 打开并配置:await port.open({ baudRate: 9600 });(支持波特率、dataBits、stopBits、parity 等)
  • 创建读取流:const reader = port.readable.getReader();,用 reader.read() 循环读取 Uint8Array
  • 创建写入流:const writer = port.writable.getWriter();,用 writer.write(new TextEncoder().encode("AT\r\n"))
  • 记得关闭:await port.close();,否则下次连接可能失败

处理接收到的数据(推荐方式)

避免阻塞,用 while(true) + await reader.read() 持续监听;用 TextDecoder 将字节转字符串;注意粘包——串口数据无天然分隔,需按协议解析(如以 \n 结尾、固定长度、或自定义帧头帧尾)。

PhotoAid Image Upscaler
PhotoAid Image Upscaler

PhotoAid出品的免费在线AI图片放大工具

下载

立即学习Java免费学习笔记(深入)”;

  • 示例解码逻辑:const decoder = new TextDecoder(); const { value, done } = await reader.read(); if (!done) console.log(decoder.decode(value));
  • 发送字符串前务必编码new TextEncoder().encode("Hello"),不能直接传字符串
  • 读写过程需用 try/catch 捕获断开、权限丢失等异常

兼容性与备选方案

Firefox 和 Safari 目前不支持 Web Serial API;若需跨浏览器支持,可考虑桌面方案:Electron(用 node-serialport)、Tauri(调用系统串口库)或通过本地 HTTP 代理(如用 Python Flask 暴露串口 API,网页 AJAX 通信)。

基本上就这些。Web Serial API 不复杂但容易忽略安全模型和用户交互要求,关键在“用户触发 + 显式授权 + 流式处理”。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

100

2025.08.25

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

81

2025.12.15

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

166

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

170

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

124

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

252

2024.09.24

chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1034

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

826

2023.11.06

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.2万人学习

Git 教程
Git 教程

共21课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号