我试图同时记录多个串行端口,一次只能登录一次,但是当我启动一个新的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
答案 0 :(得分:0)
显然是因为尝试通过/dev/stdout
选项多次使用-lf
。相反,您必须使用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 &