【问题标题】:Software serial port loopback on linuxlinux上的软件串口环回
【发布时间】:2011-01-12 16:06:37
【问题描述】:

目前我需要开发一些程序,通过串行线路与 cisco 设备通信。我想在我的开发 linux 机器上构建测试环境。所以,我找到了dynamips cisco emulator。该仿真器可以通过带有“-U /dev/ttyS0”选项的串行线提供接口。好吧,这会导致 dynamips 打开硬件串行端口并通过它进行通信。我可以使用 minicom 等串行客户端从另一台 linux 机器连接到此硬件串行端口。

但是,由于我在两台 linux 机器上都使用 virtualbox,因此我通过 virtualbox 功能链接串行端口以将串行端口转发到命名管道。该方案似乎有效,但非常多余。我正在寻找一种在单个 linux 机器上运行 dynamips 和 minicom 的方法。

我发现伪终端在我的情况下可能很有用。但我尝试使用“-U /dev/ptmx”运行 dynamips,然后与 minicom 连接以创建 /dev/pts/... 端口,反之亦然。在这两种情况下,我都有输入/输出错误。

【问题讨论】:

  • 您寻求帮助的具体问题或错误信息是什么?
  • 这个环回任务你到底有没有用openpty?

标签: linux serial-port pty loopback


【解决方案1】:

不幸的是,现代伪终端并不那么容易。用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,然后将master端连接在一起(然后从dynamips连接一个pty,另一个从minicom连接)。
  • 我没有安装minicom,所以我不知道它是否可以这样做。我现在正在阅读它的手册页,它声称也可以在 UNIX 套接字上工作!这将完全消除第二个socat
  • @caf "和 master 一起加入"。你是什​​么意思,我该怎么做?一个终端不应该是主终端,另一个是从终端吗?
  • @ephemient:你知道需要添加哪些额外代码才能通过两个 openpty 调用为打开的从属设备进行环回吗?
猜你喜欢
  • 2011-01-01
  • 2013-01-11
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多