使用socat同时嗅探多个串口

Sniff multiple serial ports simultaneously with socat

我正在尝试同时记录多个串口,我可以一次记录一次,但是当我启动一个新的socat时,旧的进程被终止了。

这是我要执行的命令,只是一个简单的 socat 嗅探文件。

socat -lf /dev/stdout -x -s 2> USB1.log /dev/ttyUSB1,echo=0 - &
socat -lf /dev/stdout -x -s 2> USB2.log /dev/ttyUSB2,echo=0 - &
socat -lf /dev/stdout -x -s 2> USB3.log /dev/ttyUSB3,echo=0 - &

我可以使用 jpnevulator 同时读取所有内容,但我认为会干扰设备的通信,因为它们突然出现通信故障,当我关闭 jpnevulator 时,通信会有所改善。我试过的命令是 jpnevulator --tty /dev/ttyUSB1 --read --timing-print

显然是因为试图通过 -lf 选项多次使用 /dev/stdout。相反,您必须使用 PTY 作为中介。

socat -xs /dev/ttyUSB1,raw  PTY,link=/tmp/USB1,raw,echo=0 2 >> USB1.log &
socat -xs /dev/ttyUSB2,raw  PTY,link=/tmp/USB2,raw,echo=0 2 >> USB2.log &
socat -xs /dev/ttyUSB3,raw  PTY,link=/tmp/USB3,raw,echo=0 2 >> USB3.log &