#串口 #串行通信 #串行 #tty #串行端口

serial2-tokio

基于 serial2 crate 的 tokio 跨平台串口库

4 个版本

0.1.13 2024 年 6 月 21 日
0.1.12 2024 年 6 月 13 日
0.1.11 2024 年 5 月 25 日
0.1.10 2024 年 4 月 23 日
0.1.4 2023 年 10 月 6 日

#592硬件支持

Download history 67/week @ 2024-05-04 16/week @ 2024-05-11 14/week @ 2024-05-18 254/week @ 2024-05-25 76/week @ 2024-06-01 162/week @ 2024-06-08 205/week @ 2024-06-15 105/week @ 2024-06-22 50/week @ 2024-06-29 19/week @ 2024-07-06 22/week @ 2024-07-13 31/week @ 2024-07-20 77/week @ 2024-07-27 62/week @ 2024-08-03 66/week @ 2024-08-10 63/week @ 2024-08-17

275 每月下载量

BSD-2-Clause OR Apache-2.0

32KB
426

serial2-tokio

使用 serial2tokio 实现串口通信。

serial2-tokio crate 提供了一个跨平台的串口接口。它旨在提供比其他替代方案更简单的接口。

当前支持的功能

  • 简单接口:所有支持的平台都使用一个 SerialPort 结构体。
  • 列出可用端口。
  • 所有支持的平台上的自定义波特率(除了 Solaris 和 Illumos)。
  • 从多个任务中并发读写,即使在 Windows 上。
  • 清除操作系统缓冲区(例如,当线路应该安静时,用于丢弃读噪声)。
  • 读取和控制单个调制解调器状态行,用作通用 I/O。
  • 跨平台配置串口设置
    • 波特率
    • 字符大小
    • 停止位
    • 奇偶校验检查
    • 流量控制
    • 读写超时

您可以使用 SerialPort::open() 打开和配置串口。`open` 方法的第二个参数必须是一个实现了 IntoSettings 的类型。在最简单的情况下,只需要传递一个波特率的 u32。这样做也会配置 8 位字符大小、1 个停止位,并禁用奇偶校验和流量控制。如果您需要完全控制应用设置,请传递一个闭包,它接收当前的 Settings 并返回所需的设置。如果这样做,您几乎总是需要在更改任何其他设置之前调用 Settings::set_raw()

结构体 SerialPort 实现了标准的 tokio::io::AsyncReadtokio::io::AsyncWrite 特性,以及 read()write() 函数,这些函数使用 &self 而不是 &mut self。这允许您从多个任务中并发使用串行端口。

函数 SerialPort::available_ports() 可以用来获取支持平台上的可用串行端口列表。

示例

此示例打开一个串行端口并回显读取到的所有内容。

use serial2_tokio::SerialPort;

// On Windows, use something like "COM1" or "COM15".
let port = SerialPort::open("/dev/ttyUSB0", 115200)?;
let mut buffer = [0; 256];
loop {
    let read = port.read(&mut buffer).await?;
    port.write(&buffer[..read]).await?;
}

依赖项

~2–11MB
~96K SLoC