Comando socat sem buffer para conectar portas seriais em máquinas remotas e registrar os dados

4

Atualmente estou usando o seguinte comando. Ele lê da serial ttyUSB0 na máquina local e conecta bidirecionalmente ao ssh, através de dois comandos tee para o registro. No final remoto, socat conecta stdio ao remoto ttyUSB0:

stty -F /dev/ttyUSB0 raw 3000000

ssh  [email protected] stty -F /dev/ttyUSB0 raw 3000000

socat /dev/ttyUSB0,raw,echo=0 SYSTEM:'"tee -a log_l2r | ssh  [email protected] socat - /dev/ttyUSB0,raw,echo=0  | tee -a log_r2l"',pty,echo=0
  1. Eu quero garantir que o armazenamento em buffer não estrague a comunicação em tempo real entre dois controladores de robô. O buffer de linha está ok, mas nada mais. Há muitas conexões no comando acima e não tenho certeza sobre possíveis pipes / soquetes em buffer. Você poderia me ajudar a identificá-los?

  2. Também preciso remover qualquer tradução ou eco (acredito que stty ... raw ... já faz isso).

  3. Existe alguma outra abordagem preferencial para resolver este problema de comunicação? ou seja, outro comando?

Rodando o Debian GNU / Linux - Ubuntu

    
por AndresR 08.11.2016 / 07:20

1 resposta

4

Se você obtiver o buffer stdio, aplique o comando stdbuf como um prefixo ao comando real.

stty provavelmente precisa de um -echo explícito.

Por uma alternativa, se você não precisa de criptografia ssh, veja o usbip módulo para fazer um dispositivo USB em uma máquina visível em outro.

Para evitar o registro tee , use apenas socat -v para obter uma cópia de ambos os fluxos de dados no stderr.

    
por 08.11.2016 / 16:15