我使用 jpnevulator 来嗅探读取串行端口的应用程序:
jpnevulator --tty /dev/ttyS0 --read
假设以下字节被发送到串行端口:ABCD E。有时 jpnevulator 仅打印字节:ACE,而应用程序获取字节 B D。
jpnevulator 应该打印字节:ABCDE 并且应用程序还应该获取所有字节:ABCD E。出了什么问题?我应该使用某些选项运行 jpnevulator 吗?
答案1
不熟悉jpnevulator
,但一般来说:如果您有两个应用程序从一个 tty 读取数据,那么只有一个应用程序会获取数据。
如果要复制数据,则必须创建第二个(或第三个)tty,并让应用程序从中读取数据。
一种方法是使用类似的东西终端总线。然后,您可以附加jpnevulator
到一个新的 tty,并将您的应用程序附加到另一个。
socat
另一种方法是与-x
or一起使用-v
,例如
socat -x PTY,link=/tmp/ptya /dev/ttyS0
然后将您的应用程序指向/tmp/ptya
,同时socat
将十六进制流量转储到stderr
。