40个版本

0.2.26 2024年6月21日
0.2.24 2024年4月23日
0.2.20 2024年3月4日
0.2.15 2023年12月27日
0.1.5 2021年11月20日

#37硬件支持 中排名

Download history 386/week @ 2024-05-03 466/week @ 2024-05-10 163/week @ 2024-05-17 196/week @ 2024-05-24 177/week @ 2024-05-31 307/week @ 2024-06-07 387/week @ 2024-06-14 545/week @ 2024-06-21 200/week @ 2024-06-28 227/week @ 2024-07-05 300/week @ 2024-07-12 276/week @ 2024-07-19 302/week @ 2024-07-26 239/week @ 2024-08-02 306/week @ 2024-08-09 368/week @ 2024-08-16

1,241 每月下载量
用于 9 个crates (8个直接使用)

BSD-2-Clause OR Apache-2.0

120KB
2.5K SLoC

serial2

Rust的串口通信。

serial2 crate提供了一个跨平台的串口接口。它的目标是提供一个比其他替代方案更简单的接口。

当前支持的功能

  • 简单接口:一个适用于所有支持平台的 SerialPort 结构体。
  • 列出可用端口。
  • 除了Solaris和Illumos之外的所有支持平台的自定义波特率。
  • 从多个线程中并发读取和写入,即使在Windows上。
  • 清除OS缓冲区(例如,当线路应该保持静默时丢弃读取噪声很有用)。
  • 读取和控制单个调制解调器状态线路,以便将其用作通用I/O。
  • 跨平台配置串口设置
    • 波特率
    • 字符大小
    • 停止位
    • 奇偶校验检查
    • 流量控制
    • 读取/写入超时
  • 使用目标特定功能标志("unix""windows")完全访问特定于平台的串口设置。

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

标准 std::io::Readstd::io::Write 特性已为 SerialPort&SerialPort 实现。这使得您可以通过不可变引用从多个线程并发地使用串行端口。

还有非特质的 read()write() 函数,因此您可以在不导入任何特质的情况下使用串行端口。这些函数接受 &self,因此它们也可以从多个线程并发使用。

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

示例

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

use serial2::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)?;
    port.write(&buffer[..read])?;
}

依赖项

~2–385KB