TTYポート共有 - 2つの異なるプロセスを介して同じポートに同時にアクセスします。ポートシェア - ラズベリー

TTYポート共有 - 2つの異なるプロセスを介して同じポートに同時にアクセスします。ポートシェア - ラズベリー

/dev/ttyACM0同時に、2つの異なるプロセスを介してポートを読み取る必要があります。プロセスがこのポートにアクセスする方法でこのポートを共有したり、他の2つのポートに分割したりできますか?このような:

                  ___/dev/ttyPort1
  /dev/ttyACM0 --/
                 \___/dev/ttyPort2

socatをインストールして試しましたsocat /dev/ttyPort1 /dev/ttyACM0。これは部分的に働いた。 socatを使用して新しいポートをttyACM0のミラーとして持っています。このポートを同時に読み取ろうとすると、受信した情報はttyACM0またはttyPort1にのみ表示され、両方が表示されず、2つが必要です。同じ情報が同時に処理されます。

答え1

プログラムがttyの代わりにfifoで読むことを意図していて、読み取るだけで書いていない場合は、tee2つのfifoを使用できます。

mkfifo fifo1 fifo2
tee </dev/ttyS0 fifo1 >fifo2 &

これで、それぞれで同じデータを開いて読み取るfifo1ことができます。fifo2ttyが本当に必要な場合は、1つを追加して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

関連情報