Linux上的软件串口环回测试

4
目前我需要开发一些与思科设备通过串口通信的程序。我想在我的开发Linux机器上建立测试环境。因此,我找到了dynamips思科模拟器。这个模拟器可以提供通过串行线接口的选项“-U / dev / ttyS0”。好吧,这会导致dynamips打开硬件串行端口并通过它进行通信。我能够使用像minicom这样的串行客户端从另一个Linux机器连接到这个硬件串行端口。
然而,由于我在两台Linux机器上都使用虚拟机,所以我通过virtualbox转发串行端口来链接串行端口。这种方案似乎有效,但非常冗余。我正在寻找一种在单个Linux机器上运行dynamips和minicom的方法。
我发现伪终端可能对我的情况有用。但是,我已经尝试过使用“-U / dev / ptmx”运行dynamips,然后连接到创建的/dev/pts/...端口并反之亦然。在这两种情况下,我都遇到了输入/输出错误。

你需要帮助解决哪个具体的问题或错误信息? - Sam Post
你最终在这个回环任务中使用了openpty吗? - László Papp
1个回答

6

不幸的是,现代伪终端并不那么容易。使用posix_openpt()open("/dev/ptmx")打开主设备后,您必须在主FD上调用grantpt()unlockpt(),然后它和其对应的从设备才能被使用。(openpty()等实用函数简化了此过程。)

作为解决方法,非常方便的socat可能会有所帮助。

# 终端1
socat pty:link=$PWD/pts unix-l:$PWD/ptm-pipe &
dynamips -U $PWD/pts
# 终端2 socat unix:$PWD/ptm-pipe -

或者您可以使用socat打开两个pty,并将主端点连接在一起(然后从dynamips连接到一个pty,从minicom连接到另一个pty)。 - caf
我没有安装minicom,所以我不知道它是否能做到那一点。我现在正在阅读它的手册页,它声称也可以在UNIX套接字上工作!这将使第二个socat变得多余。 - ephemient
@caf "并将主端点连接在一起"。这是什么意思,我该怎么做?难道不应该有一个终端作为主机,另一个作为从机吗? - nass
@ephemient:你知道在使用两个openpty调用打开从设备后,需要添加什么额外的代码才能为已打开的从设备创建一个回环吗? - László Papp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接