TTY 端口共享 - 通过两个不同的进程同时访问同一端口。端口共享 - Raspberry

TTY 端口共享 - 通过两个不同的进程同时访问同一端口。端口共享 - Raspberry

/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 &

您现在可以打开fifo1fifo2读取每个数据中的相同数据。如果你确实需要一个 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

相关内容