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 在 命令行工具 中
每月 200 次下载
25KB
380 行
虚拟串行端口路由器 (vsp-router)
创建虚拟串行端口,将它们连接到物理串行端口,并在它们之间创建路由。
Vsp-router 是为了连接两个终端模拟器到同一个物理 RS-232 串行控制台 而创建的。
支持的操作系统
- 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 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在作品中的贡献,均应如上双许可,不附加任何额外条款或条件。
依赖项
~9–22MB
~246K SLoC