#串口 #tauri-app #串行通信 #tauri-plugin #应用 #数据

sys tauri-plugin-serialplugin

通过 Tauri 程序在 Commons Conservancy 中访问您的 Tauri 应用程序的当前进程

3 个版本

2.0.0-rc.02024 年 8 月 3 日
2.0.0-beta.12024 年 2 月 5 日
2.0.0-beta.02024 年 2 月 4 日

#287 in 硬件支持

Download history 117/week @ 2024-08-03 6/week @ 2024-08-10

123 每月下载次数

Apache-2.0 OR MIT

115KB
919

Tauri 插件 - SerialPort

此插件使 Tauri 应用程序能够与串行端口通信,允许对连接的串行设备进行读写操作。

安装

此插件需要 Rust 版本 1.70 或更高。

安装此插件有以下三种推荐方法

  1. 使用 crates.io 和 npm(最简单,需要信任我们的发布流程)
  2. 直接从 GitHub 使用 git 标签/修订哈希(最安全)
  3. 在您的 Tauri 项目中使用 Git 子模块,然后使用文件协议进行源包含(最安全但不太方便)

核心插件

将以下内容添加到您的 Cargo.toml 文件中的 src-tauri/Cargo.toml

[dependencies]
tauri-plugin-serialport = "2.0.0-rc.0"

JavaScript 绑定

使用您首选的包管理器进行安装

pnpm add tauri-plugin-serialplugin
# or
npm add tauri-plugin-serialplugin
# or
yarn add tauri-plugin-serialplugin

# For direct GitHub installation:
pnpm add https://github.com/s00d/tauri-plugin-serialplugin#main
# or
npm add https://github.com/s00d/tauri-plugin-serialplugin#main
# or
yarn add https://github.com/s00d/tauri-plugin-serialport#main

使用方法

首先,在您的 Tauri 应用程序的主设置中注册核心插件

src-tauri/src/main.rs

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_serialplugin::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

配置权限

要使用此插件,您必须在您的功能配置中定义权限。将以下内容添加到您的 /src-tauri/capabilities/default.json 文件中

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "default",
  "description": "Capability for the main window",
  "windows": ["main"],
  "permissions": [
    "core:default",
    "serialplugin:default"
  ]
}

serialplugin:default 权限允许插件的基本使用。如果您需要更细粒度的权限,可以按以下方式指定

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "default",
  "description": "Capability for the main window",
  "windows": ["main"],
  "permissions": [
    "core:default",
    "serialplugin:allow-available-ports",
    "serialplugin:allow-cancel-read",
    "serialplugin:allow-close",
    "serialplugin:allow-close-all",
    "serialplugin:allow-force-close",
    "serialplugin:allow-open",
    "serialplugin:allow-read",
    "serialplugin:allow-write",
    "serialplugin:allow-write-binary"
  ]
}

权限描述

权限 描述
serialplugin:允许-可用-端口 允许列出可用串行端口
serialplugin:拒绝-可用-端口 拒绝列出可用串行端口
serialplugin:允许-取消-读取 允许取消读取操作
serialplugin:拒绝-取消-读取 拒绝取消读取操作
serialplugin:允许-关闭 允许关闭串行端口
serialplugin:拒绝-关闭 拒绝关闭串行端口
serialplugin:允许-关闭-全部 允许关闭所有打开的串行端口
serialplugin:拒绝-关闭-全部 拒绝关闭所有打开的串行端口
serialplugin:允许-强制-关闭 允许强制关闭串行端口
serialplugin:拒绝-强制-关闭 拒绝强制关闭串行端口
serialplugin:允许-打开 允许打开串行端口
serialplugin:拒绝-打开 拒绝打开串行端口
serialplugin:允许-读取 允许从串行端口读取数据
serialplugin:拒绝-读取 拒绝从串行端口读取数据
serialplugin:允许-写入 允许写入数据到串行端口
serialplugin:拒绝-写入 拒绝写入数据到串行端口
serialplugin:允许-写入-二进制 允许写入二进制数据到串行端口
serialplugin:拒绝-写入-二进制 拒绝写入二进制数据到串行端口

示例应用

在当前存储库的 examples/serialport-test 目录中可以找到一个示例应用。此示例演示了插件的基本用法,包括打开、关闭和列出串行端口。

JavaScript API

注册插件后,您可以通过提供的JavaScript绑定访问插件的API

import { SerialPort } from "tauri-plugin-serialplugin";

// Example: Listing available serial ports
async function listPorts() {
  const ports = await SerialPort.available_ports();
  console.log(ports);
}

listPorts();

其他方法

串行端口.available_ports()

列出所有可用的串行端口。

串行端口.forceClose(path:字符串)

强制关闭指定的串行端口。

串行端口.closeAll()

关闭所有打开的串行端口。

串行端口.cancelListen()

取消串行端口监控。

串行端口.cancelRead()

取消从串行端口读取数据。

串行端口.change(options: {path?:字符串;baudRate?:数字})

更改串行端口的路径和/或波特率。

串行端口.关闭()

关闭当前打开的串行端口。

串行端口.disconnected(fn: (...args:任何[]) =>void)

为串行端口断开时设置监听器。

串行端口.listen(fn: (...args:任何[]) =>void,isDecode= true)

监控串行端口信息,并使用提供的回调函数处理数据。

串行端口.打开()

以指定的设置打开串行端口。

串行端口.读取(options?:ReadOptions)

使用可选的超时和大小设置从串行端口读取数据。

串行端口.setBaudRate(value:数字)

设置串行端口的波特率。

串行端口.setPath(value:字符串)

设置串行端口的路径。

串行端口.写入(value:字符串)

向串行端口写入数据。

串行端口.writeBinary(value:Uint8Array|数字[])

将二进制数据写入串行端口。

示例代码

以下是一个小示例,演示了如何使用此插件打开、关闭和列出可用的串行端口

import { SerialPort } from 'tauri-plugin-serialplugin';

let serialport: SerialPort | undefined = undefined;
let name: string;

function openPort() {
  serialport = new SerialPort({ path: name, baudRate: 9600 });
  serialport
    .open()
    .then((res) => {
      console.log('open serialport', res);
    })
    .catch((err) => {
      console.error(err);
    });
}

function closePort() {
  serialport
    .close()
    .then((res) => {
      console.log('close serialport', res);
    })
    .catch((err) => {
      console.error(err);
    });
}

function availablePorts() {
  SerialPort.available_ports()
    .then((res) => {
      console.log('available_ports: ', res);
    })
    .catch((err) => {
      console.error(err);
    });
}

贡献

我们欢迎拉取请求!请在提交拉取请求之前阅读我们的贡献指南。

合作伙伴

此插件的支援由我们慷慨的合作伙伴提供。完整列表,请访问我们的 网站 和我们的 Open Collective

许可证

此代码在适用的情况下,根据MIT或Apache-2.0双许可,© 2019-2023 Tauri Programme within The Commons Conservancy。


此README提供了对整合串行端口通信到Tauri应用的概述、安装说明和基本用法示例。更详细和高级的使用应根据插件的全部功能和API进行文档化。

依赖关系

~19–59MB
~1M SLoC