GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menemukan Port Serial Yang Digunakan?

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!


Linux
  1. Bagaimana Cara Menggunakan `yang` Pada Perintah Aliased?

  2. Bagaimana Cara Menemukan Modul Kernel Untuk Perangkat yang Diberikan?

  3. Linux – Bagaimana Menemukan Proses Menggunakan Port Serial?

  1. Bagaimana Cara Menggunakan Chromecast?

  2. Apa yang dimaksud dengan perangkat ALSA seperti hw:0,0? Bagaimana cara mengetahui mana yang akan digunakan?

  3. Bagaimana saya bisa memantau lalu lintas port serial?

  1. Cara menggunakan FIND di Linux

  2. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  3. Bagaimana menemukan versi Java mana di folder yang diinstal Java?