#串行 #虚拟 #路由器 #socat #ttybus

bin+lib vsp-router

创建虚拟串行端口,将它们连接到物理串行端口,并在它们之间创建路由

7 个版本 (4 个稳定版)

1.0.3 2024 年 8 月 15 日
1.0.1 2023 年 8 月 2 日
0.2.0 2022 年 10 月 29 日
0.1.1 2022 年 9 月 12 日
0.1.0 2022 年 9 月 11 日

#217命令行工具

Download history 8/week @ 2024-07-29 192/week @ 2024-08-12

每月 200 次下载

MIT/Apache

25KB
380

虚拟串行端口路由器 (vsp-router)

Build status Crates.io

创建虚拟串行端口,将它们连接到物理串行端口,并在它们之间创建路由。

Vsp-router 是为了连接两个终端模拟器到同一个物理 RS-232 串行控制台 而创建的。

asciicast

支持的操作系统

  • Linux: 是的,已在 Red Hat Enterprise Linux 8 上测试
  • macOS: 是的,已在 macOS Ventura 13.1 上测试
  • Windows: 是的*,已在 Windows 10 上测试

*Windows 版本不支持创建虚拟串行端口。可以使用第三方工具 com0com 代替。

使用案例

将两个虚拟串行端口复用到单个物理串行端口。

vsp-router \
    --create 0 \
    --create 1 \
    --attach 2:/dev/ttyUSB0 \
    --route 0:2 \
    --route 1:2 \
    --route 2:0 \
    --route 2:1

将两个虚拟串行端口复用到第三个虚拟串行端口。

vsp-router \
    --create 0 \
    --create 1 \
    --create 2 \
    --route 0:2 \
    --route 1:2 \
    --route 2:0 \
    --route 2:1

示例

在终端 A 中

cargo run -- \
    --create 0 \
    --create 1 \
    --create 2 \
    --route 0:2 \
    --route 1:2 \
    --route 2:0 \
    --route 2:1

在终端 0 中

picocom 0

在终端 1 中

picocom 1

在终端 2 中

picocom 2

在终端 0 中输入的字符只会发送到终端 2。
在终端 1 中输入的字符只会发送到终端 2。
在终端 2 中输入的字符会发送到终端 0 和 1。

连接到虚拟串行端口

vsp-router 创建的虚拟串行端口与物理串行端口的行为略有不同

  • 您可以使用任何波特率连接到它们。您不必使用复用物理串行端口的相同波特率。
  • 当您不从中读取时,它们会在缓冲区中累积数据。当此缓冲区满时,新数据将被丢弃,并在日志中显示警告消息。下一次读取时,将返回任何缓冲数据。

为了避免在读取虚拟串行端口时读取缓冲区中累积的旧数据,建议在第一次读取之前清空其输入缓冲区。这可以通过在虚拟串行端口的文件描述符上使用 tcflush(fd, TCIFLUSH) (或您平台上的等效命令) 来完成。

与 TTYBUS 的比较

vsp-router 与 TTYBUS 类似。

关键区别在于数据的写入方式。TTYBUS将数据广播到所有端口。vsp-router将数据路由到选定的端口。

以下三种3端口配置是等效的。

TTYBUS

tty_bus -d -s bus
tty_fake -d -s bus 0
tty_fake -d -s bus 1
tty_fake -d -s bus 2

vsp-router

vsp-router \
    --create 0 \
    --create 1 \
    --create 2 \
    --route 0:1 \
    --route 0:2 \
    --route 1:0 \
    --route 1:2 \
    --route 2:0 \
    --route 2:1

与socat的对比

Socat在两个端点之间建立双向通道。vsp-router在N个端点之间建立多向通道。Socat支持多种不同类型的端点。vsp-router支持两种:虚拟串行端口和物理串行端口。

vsp-router可以与socat结合使用,以实现有趣的使用场景。例如,vsp-router可以用来监视物理串行端口,并与socat配合通过UDP发送监视到的数据。

许可证

根据您的选择,许可如下

任选其一。

贡献

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

依赖项

~9–22MB
~246K SLoC