socat je nástroj pro připojení (téměř) všeho k (téměř) všemu a tee může duplikovat streamy.
Ve vašem případě použití můžete připojit sériový port /dev/ttyS0
na PTY /tmp/ttyV0
, pak nasměrujte svou aplikaci na PTY a mějte socat tee
ven Vstup a výstup někde, kde je můžete pozorovat.
Googlování "socat serial port pty tee debug" vás nasměruje na několik příkladů "standardního postupu", z nichž jeden je:
socat /dev/ttyS0,raw,echo=0 \
SYSTEM:'tee in.txt |socat - "PTY,link=/tmp/ttyV0,raw,echo=0,waitslave" |tee out.txt'
Soubory in.txt
a out.txt
bude poté obsahovat zachycená data.
Aktualizováno po komentářích:
- Syntaxe socat vypadá zpočátku zmateně, ale ve skutečnosti jsou to jen 2 vnořené příkazy.
Malá cena, kterou zaplatíte za tak výkonný a všestranný nástroj. - Pokud potřebujete nastavit sériový port nebo odeslat jiné soubory ioctl, udělejte to před voláním socat, protože je socat nemůže proxy.
- Jednoúčelový nástroj
interceptty
z roku 2006 má o něco jednodušší syntaxi, ale dokáže zachytit pouze TTY (při proxy ioctls) a pravděpodobně není ve vašem správci balíčků. (Většina linuxových distribucí jej nikdy nepřidala do svých repozitářů)
Nemyslím si, že sériový ovladač má nějakou funkci sledování, která by vám umožnila sledovat pakety. Můžete použít strace
sledovat všechna čtení a zápisy z vaší aplikace:
strace -s9999 -o myapp.strace -eread,write,ioctl ./myapp
Našel jsem projekty s názvem Linux Serial Sniffer, jpnevulator a Moni. První dva vypadají, že dělají přesně to, co chcete. Poslední se nazývá monitor, ale ve skutečnosti vypadá jako standardní sériový komunikační program.