2个版本
0.1.1 | 2024年8月10日 |
---|---|
0.1.0 | 2024年8月10日 |
#501 在 硬件支持
199 每月下载量
29KB
464 代码行
虚拟串口
串口模拟器(虚拟端口)设计用于与 serialport
crate 一起工作。它支持使用内部缓冲区从端口读取和写入,具有可选的超时功能。
模拟器还允许配置标准串口参数,例如
- 波特率
- 数据位
- 奇偶校验
- 停止位
- 流控制
其他功能包括
-
控制信号模拟:模拟控制信号(RTS/CTS,DTR/DSR/CD)。注意,基于这些信号的实际流控制尚未实现。
-
传输延迟模拟:启用时,根据波特率模拟传输延迟。这是通过为每个读取的符号添加固定延迟(延迟根据波特率计算)来简化的。
-
噪声模拟:如果启用,在配对端口的物理设置(波特率、数据位、奇偶校验和停止位)不匹配时模拟噪声。这有助于测试系统在配置不匹配的情况下如何处理损坏或无效的数据。
示例用法
环回示例
use std::io::{Read, Write};
use virtual_serialport::VirtualPort;
let mut port = VirtualPort::open_loopback(9600, 1024).unwrap();
let write_data = b"hello";
let mut read_data = [0u8; 5];
port.write_all(write_data).unwrap();
port.read_exact(&mut read_data).unwrap();
assert_eq!(&read_data, write_data);
配对示例
use std::io::{Read, Write};
use virtual_serialport::VirtualPort;
let (mut port1, mut port2) = VirtualPort::open_pair(9600, 1024).unwrap();
let write_data = b"hello";
let mut read_data = [0u8; 5];
port1.write_all(write_data).unwrap();
port2.read_exact(&mut read_data).unwrap();
assert_eq!(&read_data, write_data);
更多示例可以在本仓库根目录下的 examples
文件夹中找到。
依赖项
~2.5MB
~48K SLoC