socat adalah alat untuk menghubungkan (hampir) semuanya ke (hampir) semuanya, dan tee dapat menduplikasi aliran.
Dalam usecase Anda, Anda dapat menghubungkan port serial Anda /dev/ttyS0 ke PTY /tmp/ttyV0 , lalu arahkan aplikasi Anda ke PTY, dan minta socat tee keluar Input dan Output di suatu tempat untuk Anda amati.
Googling "socat serial port pty tee debug" akan mengarahkan Anda ke beberapa contoh "prosedur standar", salah satunya:
socat /dev/ttyS0,raw,echo=0 \
SYSTEM:'tee in.txt |socat - "PTY,link=/tmp/ttyV0,raw,echo=0,waitslave" |tee out.txt'
File in.txt dan out.txt kemudian akan berisi data yang diambil.
Diperbarui setelah komentar:
- Sintaks socat terlihat membingungkan pada awalnya, namun sebenarnya, ini hanyalah 2 pernyataan bersarang.
Harga kecil untuk membayar alat yang begitu kuat dan serbaguna. - Jika Anda perlu menyiapkan port serial, atau mengirim ioctl lain, lakukan sebelum memanggil socat, karena socat tidak dapat mem-proxy mereka.
- Alat serbaguna
intercepttydari tahun 2006 memiliki sintaks yang sedikit lebih sederhana, tetapi hanya dapat mencegat TTY (saat mem-proxy ioctl), dan mungkin tidak ada di manajer paket Anda. (Kebanyakan distro Linux tidak pernah menambahkannya ke repo mereka)
Saya tidak berpikir driver serial memiliki fungsi pelacakan yang memungkinkan Anda untuk menonton paket. Anda dapat menggunakan strace untuk mengamati semua pembacaan dan penulisan dari aplikasi Anda:
strace -s9999 -o myapp.strace -eread,write,ioctl ./myapp
Saya menemukan proyek bernama Linux Serial Sniffer, jpnevulator, dan Moni. Dua yang pertama terlihat seperti mereka melakukan apa yang Anda inginkan. Yang terakhir menyebut dirinya monitor, tetapi sebenarnya terlihat seperti program komunikasi serial standar.