TTy Port Sharing - Acesse a mesma porta por dois processos diferentes simultaneamente.Compartilhamento de portas - Framboesa

1

Eu preciso ler a porta /dev/ttyACM0 por dois processos diferentes simultaneamente. É possível Compartilhar essa porta como uma maneira de processar o acesso a essa porta ou dividir em outras duas portas? Algo assim:

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

Eu tentei instalar uma socat e usar socat /dev/ttyPort1 /dev/ttyACM0 . isso funcionou parcialmente. Com socat eu tenho a nova porta como um espelho do ttyACM0, mas quando me conecto para ler essas portas simultaneamente, as informações recebidas só aparecem em ttyACM0 ou ttyPort1, nunca em ambas ao mesmo tempo, e preciso da mesma informação para 2 processo ao mesmo tempo.

    
por Elliot Alderson 06.09.2016 / 14:04

1 resposta

2

Se os seus programas estão dispostos a ler de um fifo ao invés de um tty, e você está apenas lendo e não escrevendo, então você pode usar tee e dois fifos:

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

Agora você pode abrir fifo1 e fifo2 e ler os mesmos dados de cada um. Se você realmente precisa de um tty, então você pode adicionar um socat para ler cada fifo e conectá-lo a um arquivo:

socat -u GOPEN:fifo1 pty,link=$HOME/ttyPort1,raw,echo=0 &
socat -u GOPEN:fifo2 pty,link=$HOME/ttyPort2,raw,echo=0 &

Leia $HOME/ttyPort1 e $HOME/ttyPort2 .

    
por 06.09.2016 / 22:02