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 在 硬件支持 中排名
1,241 每月下载量
用于 9 个crates (8个直接使用)
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::Read
和 std::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