3 个版本
2.0.0-rc.0 | 2024 年 8 月 3 日 |
---|---|
2.0.0-beta.1 | 2024 年 2 月 5 日 |
2.0.0-beta.0 | 2024 年 2 月 4 日 |
#287 in 硬件支持
123 每月下载次数
115KB
919 行
Tauri 插件 - SerialPort
此插件使 Tauri 应用程序能够与串行端口通信,允许对连接的串行设备进行读写操作。
安装
此插件需要 Rust 版本 1.70 或更高。
安装此插件有以下三种推荐方法
- 使用 crates.io 和 npm(最简单,需要信任我们的发布流程)
- 直接从 GitHub 使用 git 标签/修订哈希(最安全)
- 在您的 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