1 个不稳定版本
0.1.0 | 2022 年 12 月 19 日 |
---|
#944 在 硬件支持
32KB
781 行
rfc2217-rs
rfc2217-rs 是一个 Rust 中的 IETF RFC2217 实现,它允许通过 TCP/IP 连接实现串行端口功能。
什么是 RFC2217
IETF RFC2217 定义了一个 Telnet 扩展,提供了串行端口功能。最初它打算与调制解调器、串行打印机、传真机等设备一起使用,但它能够将任何基于串行的设备连接到网络上。
库功能
此库提供服务器实现、协议解析器和具有二进制序列化/反序列化支持的 数据结构。
该库与 std
和 no_std
兼容,但服务器实现仅在 std
模式下可用。要在 no_std
模式下使用库,请将 std
特性设置为 false
。
如何使用
- 使用服务器
use rfc2217_rs::Server;
// --snip--
let mut server = Server::new("/dev/ttyUSB1", "127.0.0.1:7878").unwrap();
// --snip--
loop {
let result = server.run();
if let Err(error) == result {
handle_err(error);
}
}
- 使用解析器
use rfc2217_rs::Parser;
use rfc2217_rs::parser::Event;
// --snip--
let mut parser = Parser::new();
// --snip--
loop {
// --snip--
let result = parser.process_byte(byte);
match result {
Ok(event) => handle_event(event),
Err(error) => handle_error(error),
}
}
- 使用数据结构序列化/反序列化
use rfc2217_rs::Command;
// --snip--
let command_buf = [0; command::SIZE];
let command = Command::NoOp;
command.serialize(&mut command_buf);
let deserialized_command = Command::deserialize(&command_buf);
工作原理
许可
许可方式:
- Apache 许可证 2.0 版(http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(http://opensource.org/licenses/MIT)。
贡献
除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证的定义,均应按上述方式双重许可,不附加任何额外条款或条件。
依赖
~0–1.1MB
~18K SLoC