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
interceptty
dari 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.