[VUE] Web Serial API的简单示例

news2025/1/22 13:00:16
<template>
  <div class="home">
    <div>
      <input type="text" v-model="inputData" placeholder="输入要发送的数据" />
      <button @click="sendData">发送</button>
    </div>
    <div>
      <textarea v-model="receivedData" readonly></textarea>
    </div>
    <button @click="initSerial">Initialize Serial Connection</button>
  </div>
</template>

<script>

export default {
  data() {
    return {
      port: null,

      inputData: "", // 用于存储输入的数据
      receivedData: "", // 用于存储接收到的数据
    };
  },
  created() {
  },
  methods: {
    async initSerial() {
      try {
        this.port = await navigator.serial.requestPort();
        console.log("port: ", this.port);
        await this.port.open({ baudRate: 115200 });

        this.readData();

        // 监听设备连接
        navigator.serial.addEventListener("connect", (event) => {
          console.log("设备已连接");
        });
        // 监听设备断开
        navigator.serial.addEventListener("disconnect", (event) => {
          console.log("设备已断开");
        });
      } catch (error) {
        console.error("Serial connection error:", error);
      }
    },
    async readData() {
      const decoder = new TextDecoder("utf-8"); // 指定字符编码方式
      const reader = this.port.readable.getReader();
      try {
        while (true) {
          const { value, done } = await reader.read();
          if (done) {
            break;
          }

          const decodedString = decoder.decode(value); // 将字节数组解码为字符串

          // 处理接收到的数据
          console.log("Received data:", decodedString);
          this.receivedData += decodedString;
        }
      } catch (error) {
        console.error("Serial read error:", error);
      } finally {
        reader.releaseLock();
      }
    },
    async sendData() {
      console.log("data: ", this.inputData);
      const writer = this.port.writable.getWriter();
      const encoder = new TextEncoder();
      const dataArray = encoder.encode(this.inputData);
      try {
        await writer.write(dataArray);
        writer.releaseLock();
      } catch (error) {
        console.error("Serial write error:", error);
      }
      this.inputData = "";
    },
    async disconnectSerialPort(port) {
      try {
        await port.close(); // 关闭串口连接
        console.log("Serial port disconnected.");
      } catch (error) {
        console.error("Error disconnecting serial port:", error);
      }
    },
  },
};
</script>

 

Web Serial API:Web Serial API

WebUSB API:WebUSB API - Web APIs | MDN

Serial Terminal : https://googlechromelabs.github.io/serial-terminal/

相关文章:

什么,网页也能直接与硬件通信?Web Serial API!|8月更文挑战 什么,网页也能直接与硬件通信?Web Serial API!|8月更文挑战 - 掘金

【10. 连接硬件设备至 web 应用】 10. 连接硬件设备至 web 应用_哔哩哔哩_bilibili

使用 Web Serial API 在浏览器上实现基于 WEB 的串口通信 GitHub - WangTiantian139/serial-logger-and-plotter

跨越嵌入式到云端的新型容器:WebAssembly Micro Runtime 跨越嵌入式到云端的新型容器:WebAssembly Micro Runtime_开源_王鑫_InfoQ精选文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/942990.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySql】mysql之基础语句

一、常用的数据类型 类型解释举例int整型用于定义整数类型的数据&#xff08;1、2、3、4、5…&#xff09;float单精度浮点&#xff08;4字节32位&#xff09;准确表示小数点后六位double双精度浮点&#xff08;8字节64位&#xff09;小数位更多&#xff0c;更精确char固定长度…

2.4 opensbi: riscv: opensbi源码解析

4.6 sbi_hart_init()函数 sbi_hart_init(scratch, TRUE) 1.支持hypervisor扩展模式的话,设置trap的基地址为__sbi_expected_trap_hext 2.分配在扩展区域分配struct hart_features结构体 3.记录feature到struct hart_features结构体中 4.1.是否支持浮点数扩展 4.2.是否支持…

常用的GPT插件

0.简介 随着chatgpt爆火&#xff0c;这玩意并不对国内用户开放&#xff0c;如果想要使用的话还要需要进行翻墙以及国外手机号才能进行注册。 对于国内来说有很多国内免费的方法&#xff0c;这里就整理一下&#xff0c;方便大家开发 1. 网站类型 下面的网站无需注册即可免费…

ADRV9009子卡 设计原理图:FMCJ450-基于ADRV9009的双收双发射频FMC子卡 便携测试设备

FMCJ450-基于ADRV9009的双收双发射频FMC子卡 一、板卡概述 ADRV9009是一款高集成度射频(RF)、捷变收发器&#xff0c;提供双通道发射器和接收器、集成式频率合成器以及数字信号处理功能。北京太速科技&#xff0c;这款IC具备多样化的高性能和低功耗组合&#xff0c;FMC子…

数据通信——DHCP

DHCP还没写相关的笔记&#xff0c;但是我觉得大家应该都知道其用途——用来动态的分配IP地址的技术。 一&#xff0c;技术背景 在之前的背景下&#xff0c;公司越来越nb了&#xff0c;居然有几十个员工了&#xff0c;还分配了部门&#xff01;领导说大家部门不一样&#xff0c…

Royal TSX 6 Mac多协议远程软件

Royal TSX是一款功能强大的远程桌面管理软件&#xff0c;适用于Mac操作系统。它允许用户通过一个集成的界面来管理和访问多个远程计算机和服务器。 Royal TSX支持多种远程协议&#xff0c;包括RDP、VNC、SSH、Telnet和FTP等&#xff0c;可以方便地连接到Windows、Linux、Mac和其…

永久免费的SSL证书哪里申请?

在如今互联网发展的时代&#xff0c;保障网站的安全性已经成为了一个必不可少的事项。其中&#xff0c;SSL&#xff08;Secure Socket Layer&#xff09;证书是确保数据传输安全的关键工具之一。然而&#xff0c;许多网站管理者面临一个问题&#xff0c;那就是如何申请一个永久…

快速入门:掌握Koa基础使用技巧

前言 本文主要是学习koa的使用。 基础学习 前置准备 初始化 pnpm init 安装相关包 pnpm install koa koa-router mysql2 新建数据库 USE notes_app;DROP TABLE IF EXISTS notes_categories;CREATE TABLE IF NOT EXISTS notes_categories (id INT AUTO_INCREMENT PRIM…

财务数据分析?奥威BI数据可视化工具很擅长

BI数据可视化工具通常是可以用户各行各业&#xff0c;用于不同主题的数据可视化分析&#xff0c;但面对财务数据分析这块难啃的骨头&#xff0c;能够好好地完成的&#xff0c;还真不多。接下来要介绍的这款BI数据可视化工具不仅拥有内存行列计算模型这样的智能财务指标计算功能…

25 | 不破不立:掌握代码级测试的基本理念与方法

代码级测试的测试方法一定是一套测试方法的集合&#xff0c;而不是一个测试方法。 代码错误&#xff0c;可以划分为“有特征”的错误和“无特征”的错误两大类。其中&#xff0c;“有特征”的错误&#xff0c;又可以进一步细分为语法特征错误、边界行为特征错误和经验特征错误&…

Web3.0时代什么时候到来,Web3.0有什么机会?

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

MySQL事物和存储引擎

事务 一、MySQL事务的概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行。 事务是一个不可分割的工作逻辑单…

基于Spring实现博客项目

访问地址:用户登录 代码获取:基于Spring实现博客项目: Spring项目写博客项目 一.项目开发 1.项目开发阶段 需求评审,需求分析项目设计(接口设计,DB设计等&#xff0c;比较大的需求,需要设计流程图&#xff0c;用例图,UML, model中的字段)开发&#xff0b;自测提测(提交测试…

iOS开发Swift-2-图片视图、App图标-赏月App

1.创建新项目 点击File - New - Project。 选择Single View App&#xff0c;点击Next。 填写文件信息&#xff0c;点击Next。 选择文件位置&#xff0c;点击Create。 修改App显示名称为 “赏月”。 2.设置背景色 选择Main&#xff0c;点击View界面&#xff0c;选择右边属性&…

7、监测数据采集物联网应用开发步骤(5.3)

监测数据采集物联网应用开发步骤(5.2) 静态配置库数据库调用&#xff0c;新建全局变量初始化类com.zxy.main.Init_Page.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 from com.zxy.z_debug import z_debug from com.zxy.common…

ThreeJS 模型中内嵌文字

之前有过模型中内嵌html网页&#xff0c;地址☞threeJS 模型中加载html页面_threejs 加载dom元素_小菜花29的博客-CSDN博客 这次是纯粹的在模型中嵌入文本信息&#xff0c;进行简单的文字展示 展示效果图 1. 使用FontLoader文字加载器 引入文本json文件&#xff0c;代码如下…

会话技术之Cookie和Session

一、会话技术 1、概念 会话&#xff1a;一次会话包含多次请求和响应。一次会话&#xff1a;浏览器第一次给服务器资源发送请求&#xff0c;会话建立&#xff0c;直到有一方断开为止。 2、功能 用于在多次请求之间跟踪和管理用户状态&#xff0c;实现数据连续性、数据共…

掉了无数头发成地中海后,我整理出了这套40+的大屏模板,快收藏!

最近又有不少粉丝后台问我接不接做可视化大屏&#xff0c;看来可视化大屏是越来越火啦&#xff0c;但老李还是要说一下&#xff0c;老李本身工作就很忙&#xff0c;实在是顾不过来&#xff0c;但老李会在自己体验过后为大家挑选合适的工具和模板&#xff0c;提升大家做大屏的效…

『PyQt5-Qt Designer篇』| 07 Qt Designer中栅格布局和表单布局的使用

07 Qt Designer中栅格布局和表格布局的使用 1 栅格布局1.1 按钮布局1.2 栅格布局中拖入控件1.3 保存并调用2 表单布局2.1 标签+输入控件2.2 保存并调用3 组合水平和垂直布局1 栅格布局 1.1 按钮布局 拖入几个按钮,如图: 选中所有按钮,右键点击布局-栅格布局: 之后可以看到…

日志开源组件(六)Adaptive Sampling 自适应采样

业务背景 有时候日志的信息比较多&#xff0c;怎么样才可以让系统做到自适应采样呢&#xff1f; 拓展阅读 日志开源组件&#xff08;一&#xff09;java 注解结合 spring aop 实现自动输出日志 日志开源组件&#xff08;二&#xff09;java 注解结合 spring aop 实现日志tr…