2 个版本
0.1.1 | 2024 年 3 月 27 日 |
---|---|
0.1.0 | 2024 年 3 月 26 日 |
#526 在 硬件支持
每月下载量:31
23KB
330 行
围绕 tokio_serial::SerialStream
的串行节流包装器
可用于实现 AsyncRead + AsyncWrite 的任何东西,但目前已仅针对串行端口进行测试。
我构建这个库是因为 Modbus RTU 规范要求在读取和写入之间保持一定时间的静默才能符合规范。(它还要求具有特定的字符间时间,我将忽略它)
此代码对定时器超时的具体要求并不充分,因为 tokio 超时并不足够精确以保证任何事情。然而,它足以确保读/写操作之间至少有一定的时间间隔。
由于某些原因 (...) 我还实现了相反的操作,即写入后等待再读取,尽管我不知道这为什么是必要的。
示例
use std::time::Duration;
use tokio_serial::{SerialPort, SerialStream};
use tokio_serial_pacing::{SerialPacing, SerialWritePacing};
#[tokio::main(flavor="current_thread")]
async fn main() -> std::io::Result<()> {
let (tx, mut rx) = SerialStream::pair().expect("Failed to open PTY");
let mut rx: SerialWritePacing<SerialStream> = rx.into();
rx.set_delay(Duration::from_millis(3));
Ok(())
}
依赖项
~5–17MB
~174K SLoC