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