用于连接远程计算机中的串行端口并记录数据的无缓冲 socat 命令

用于连接远程计算机中的串行端口并记录数据的无缓冲 socat 命令

我目前正在使用以下命令。它从本地计算机中的串行 ttyUSB0 读取数据,并通过两个 tee 命令双向连接到 ssh 进行日志记录。在远程端,socat 将 stdio 连接到远程 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. 我想确保缓冲不会破坏实时通信两个机器人控制器之间。行缓冲还可以,但仅此而已。
    上面的命令中有很多连接,我不确定潜在的缓冲管道/套接字。你能帮我找出它们吗?

  2. 另外我需要删除任何翻译或回显(我相信stty ... raw ...已经这样做了)。

  3. 是否有其他首选方法来解决此通信问题?即其他命令?

运行 Debian GNU/Linux - Ubuntu

答案1

如果您获得 stdio 缓冲,则将该stdbuf命令作为实际命令的前缀。

stty可能需要一个明确的-echo.

作为替代方案,如果您不需要 ssh 加密,请查看usbip用于使一台机器上的 USB 设备在另一台机器上可见的模块。

为了避免tee日志记录,只需socat -v在 stderr 上获取两个数据流的副本即可。

相关内容