/dev/ttyACM0
我需要同时通过两个不同的进程读取端口。是否可以共享此端口作为进程访问此端口的方式,或拆分为另外两个端口?像这样的东西:
___/dev/ttyPort1
/dev/ttyACM0 --/
\___/dev/ttyPort2
我尝试安装 socat 并使用socat /dev/ttyPort1 /dev/ttyACM0
.这部分起作用了。使用 socat,我将新端口作为 ttyACM0 的镜像,但是当我连接以同时读取此端口时,收到的信息仅出现在 ttyACM0 或 ttyPort1 中,而不会同时出现在两者中,并且我需要 2 个相同的信息同时进行处理。
答案1
如果您的程序愿意从 fifo 而不是 tty 读取,并且您只是读取而不是写入,那么您可以使用tee
和 两个 fifo:
mkfifo fifo1 fifo2
tee </dev/ttyS0 fifo1 >fifo2 &
您现在可以打开fifo1
并fifo2
读取每个数据中的相同数据。如果你确实需要一个 tty,那么你可以添加一个socat
来读取每个 fifo 并将其连接到 pty:
socat -u GOPEN:fifo1 pty,link=$HOME/ttyPort1,raw,echo=0 &
socat -u GOPEN:fifo2 pty,link=$HOME/ttyPort2,raw,echo=0 &
读$HOME/ttyPort1
和$HOME/ttyPort2
。