4 个版本
| 0.1.13 | 2024 年 6 月 21 日 |
|---|---|
| 0.1.12 | 2024 年 6 月 13 日 |
| 0.1.11 | 2024 年 5 月 25 日 |
| 0.1.10 |
|
| 0.1.4 |
|
#592 在 硬件支持
275 每月下载量
32KB
426 行
serial2-tokio
serial2-tokio crate 提供了一个跨平台的串口接口。它旨在提供比其他替代方案更简单的接口。
当前支持的功能
- 简单接口:所有支持的平台都使用一个
SerialPort结构体。 - 列出可用端口。
- 所有支持的平台上的自定义波特率(除了 Solaris 和 Illumos)。
- 从多个任务中并发读写,即使在 Windows 上。
- 清除操作系统缓冲区(例如,当线路应该安静时,用于丢弃读噪声)。
- 读取和控制单个调制解调器状态行,用作通用 I/O。
- 跨平台配置串口设置
- 波特率
- 字符大小
- 停止位
- 奇偶校验检查
- 流量控制
- 读写超时
您可以使用 SerialPort::open() 打开和配置串口。`open` 方法的第二个参数必须是一个实现了 IntoSettings 的类型。在最简单的情况下,只需要传递一个波特率的 u32。这样做也会配置 8 位字符大小、1 个停止位,并禁用奇偶校验和流量控制。如果您需要完全控制应用设置,请传递一个闭包,它接收当前的 Settings 并返回所需的设置。如果这样做,您几乎总是需要在更改任何其他设置之前调用 Settings::set_raw()。
结构体 SerialPort 实现了标准的 tokio::io::AsyncRead 和 tokio::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