Pertanyaan:
Saya mencolokkan perangkat (mis. modem GSM) melalui port serial (alias RS-232), dan saya perlu melihat dengan file mana di /dev/
sistem file perangkat ini diikat, untuk dapat berkomunikasi dengannya. Sayangnya tidak ada file yang baru dibuat di /dev/
juga tidak dapat melihat apa pun di dmesg
keluaran. Jadi ini sepertinya pertanyaan yang sulit.
Latar Belakang:
Saya belum pernah bekerja dengan perangkat serial, jadi kemarin, ketika ada kebutuhan, saya mencoba mencarinya di Google tetapi tidak dapat menemukan sesuatu yang membantu. Saya menghabiskan beberapa jam untuk mencari, dan saya ingin membagikan jawaban yang ditemukan karena dapat membantu seseorang.
Jawaban yang Diterima:
Sayangnya port serial bukan PlugNPlay, jadi kernel tidak tahu perangkat mana yang dicolokkan. Setelah membaca HowTo tutorial Saya punya ide kerja.
/dev/
direktori unix like OS berisi file bernama ttySn (dengan n sebagai angka) . Kebanyakan dari mereka tidak sesuai dengan perangkat yang ada. Untuk menemukan mana yang berfungsi, berikan perintah:
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
Di atas adalah contoh output dari PC saya. Anda dapat melihat inisialisasi beberapa port serial:
ttyS0
, ttyS1
, ttyS4
, ttyS5
.
Salah satunya akan memiliki tegangan positif pada perangkat yang dicolokkan. Jadi dengan membandingkan isi file /proc/tty/driver/serial
dengan dan tanpa perangkat dicolokkan, kita dapat dengan mudah menemukan ttyS terkait dengan perangkat kami. Jadi, sekarang lakukan:
$ sudo cat /proc/tty/driver/serial> /tmp/1
(cabut) colokan perangkat
$ sudo cat /proc/tty/driver/serial> /tmp/2
Selanjutnya periksa perbedaan antara kedua file tersebut. Di bawah ini adalah output dari PC saya:
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
Dengan membandingkan ketiga angka tersebut dengan keluaran dmesg kita dapat menentukan mana yang merupakan port:
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Oleh karena itu, perangkat kami adalah /dev/ttyS0
, misi tercapai!