我目前正在使用以下命令。它从本地计算机中的串行 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
我想确保缓冲不会破坏实时通信两个机器人控制器之间。行缓冲还可以,但仅此而已。
上面的命令中有很多连接,我不确定潜在的缓冲管道/套接字。你能帮我找出它们吗?另外我需要删除任何翻译或回显(我相信
stty ... raw ...
已经这样做了)。是否有其他首选方法来解决此通信问题?即其他命令?
运行 Debian GNU/Linux - Ubuntu
答案1
如果您获得 stdio 缓冲,则将该stdbuf
命令作为实际命令的前缀。
stty
可能需要一个明确的-echo
.
作为替代方案,如果您不需要 ssh 加密,请查看usbip用于使一台机器上的 USB 设备在另一台机器上可见的模块。
为了避免tee
日志记录,只需socat -v
在 stderr 上获取两个数据流的副本即可。