0

我想通过串口开发文件执行 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 发送命令。通信也应该是双向的

有可能实现这个目标吗?还是有任何其他类似的方法可以实现相同的目标?

提前致谢

4

2 回答 2

0

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

于 2014-12-18T07:36:14.473 回答
0
peer0=>ttyS0--->---ttyS1=>peer1
peer0<=ttyS0---<---ttyS1<=peer1

你似乎想socat参加以上的--->---部分---<---。这是不可能的,因为socat必须打开ttyS0ttyS1peer0来自 的输入ttyS0以及peer1来自的输入竞争ttyS1。要实现通过另一个端口与一个串行端口上的应用程序通信的目标,只需使用零调制解调器电缆连接两个端口。

于 2017-03-09T13:39:08.837 回答