#telnet #com-port #networking #no-std #rfc2217

no-std rfc2217-rs

IETF RFC2217 的 Rust 实现

1 个不稳定版本

0.1.0 2022 年 12 月 19 日

#944硬件支持

MIT/Apache

32KB
781

rfc2217-rs

rfc2217-rs 是一个 Rust 中的 IETF RFC2217 实现,它允许通过 TCP/IP 连接实现串行端口功能。

什么是 RFC2217

IETF RFC2217 定义了一个 Telnet 扩展,提供了串行端口功能。最初它打算与调制解调器、串行打印机、传真机等设备一起使用,但它能够将任何基于串行的设备连接到网络上。

库功能

此库提供服务器实现、协议解析器和具有二进制序列化/反序列化支持的 数据结构。

该库与 stdno_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);

工作原理

diagram diagram

许可

许可方式:

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证的定义,均应按上述方式双重许可,不附加任何额外条款或条件。

依赖

~0–1.1MB
~18K SLoC