【问题标题】:IPC pipe through files /dev/ttyS0 and /dev/ttyS1通过文件 /dev/ttyS0 和 /dev/ttyS1 的 IPC 管道
【发布时间】:2014-12-17 05:19:21
【问题描述】:

我想通过串口开发文件执行 IPC 管道。这是要求 首先我尝试使用

sudo socat /dev/ttyS0,raw,echo=0,crnl /dev/ttyS1,raw,echo=0,crnl

报错如下

2014/12/xx 10:33:19 socat[17848] E tcgetattr(4, 0x7fffe76ecaa0): Input/output error

一旦 ttyS0 和 ttyS1 连接,我假设我们可以像使用 pipe() 一样执行读/写操作,我将有两个程序 peer0.c 和 peer1.c,peer0.c 打开 /dev/ttyS0 peer1.c 打开 /dev/ttyS1, 这样读写操作应该如下

peer0=>ttyS0--->---ttyS1=>peer1
peer0<=ttyS0---<---ttyS1<=peer1

由于 /dev/ttyS(0/1) 是系统范围的,我可以在一个终端上运行 peer0.c 程序,在另一个终端上运行 peer1.c,

基本上,我有基于 linux 的嵌入式应用程序,当移植到目标硬件时,它将由基于 linux 的 PC 通过 minicom UART 接口控制。目标打开它的ttyS0来读取从PC发送的uart数据,在PC中,命令将通过minicom发送到目标。 现在我想在一个终端的同一台 PC 上运行目标应用程序,并想从另一个终端/minicom 发送命令。通信也应该是双向的

有可能实现这个目标吗? 还是有其他类似的方法可以达到同样的效果?

提前致谢

【问题讨论】:

    标签: c linux ipc virtual-serial-port


    【解决方案1】:

    如果您只想传输文件,请通过串行链路使用协议,例如 ZMODEM (http://en.wikipedia.org/wiki/ZMODEM),如果您想要完整 IPC,请通过链路 (http://en.wikipedia.org/wiki/Point-to-Point_Protocol) 建立 PPP 连接

    【讨论】:

      【解决方案2】:
      peer0=>ttyS0--->---ttyS1=>peer1
      peer0<=ttyS0---<---ttyS1<=peer1
      

      您似乎希望socat 参与上面的---&gt;------&lt;---。这是不可能的,因为socat 必须打开ttyS0ttyS1 并与peer0 竞争来自ttyS0 的输入,以及与peer1 竞争来自ttyS1 的输入。 要实现通过另一个端口与一个串行端口上的应用程序通信的目标,只需用一根空调制解调器电缆连接两个端口即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多