33
33
どの /dev/ttyS* が自分のシリアルポートかを知るには?
私は、シリアルポートが1つしかないノートパソコンを持っています。
/dev
ディレクトリに入りました。
ttyS0
ttyS1
ttyS2
ttyS3
ディレクトリに入りました。
私は、シリアルポートが1つしかないノートパソコンを持っています。
/dev
ディレクトリに入りました。
ttyS0
ttyS1
ttyS2
ttyS3
ディレクトリに入りました。
/proc/tty/driver/serial
で検出されたUARTを確認してください。uart:unknown
の行は、何も検出されていないことを意味します(存在しない可能性が高い)。
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3
何かが接続されていて、CTS、DSR、CD(これらは入力ラインです)のラインを駆動している場合は、実際に何かがあることを確信することができます。rx バイト数についても同じことが言えます。
プログラムでこれを行う必要がある場合、dmesg から出力を読むのは面倒です。代わりに /dev/serial/by-id フォルダには、デバイスの識別可能なデータにちなんだシンボリックリンクがあり、それらが接続されている特定の /dev/tty* を指しています。
これがディストリビューション固有の特別な udev ルールなのかどうかはわかりませんが、Ubuntu ではうまく動作します。
ttyS0
~3
はそれぞれCOM1
~4
に対応しています。これらは通常、同じハードウェアリソースを持っており、常に検出可能ではないため、常に存在しています。
また、setserial
を使ってデータを取得するコマンド/proc/tty/driver/serial
もあります。
# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3