回答:
私はそれがこのコマンドだと思う:
dmesg | grep tty
私のLinuxボックス(シリアルポートが1つしかない)でそれを実行すると、単一のttyS0出力行が生成されます。自分で試してみてください、あなたは私が意味するものが表示されます。
tty
するだけでttyの名前を取得できます。OPは「どのシリアルポートがgetty
実行されているのか?」という質問を投げかけなかったので、これがOPの意味だと思います。
で検出されたUARTを確認し/proc/tty/driver/serial
ます。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-byte-countについても同様です。
プログラムでこれを行う必要がある場合、dmesgからの出力の読み取りが面倒になる可能性があります。代わりに、フォルダー/ dev / serial / by-idには、デバイスの識別可能なデータにちなんで名付けられ、特定の/ dev / tty *を指すsymリンクがありますに接続されています。
これがディストリビューション固有の特別なudevルールかどうかはわかりませんが、Ubuntuでうまく機能します。機能するかどうか教えてください。
ttyS0
スルー3
対応するCOM1
スルー4
それぞれ。通常、これらは同じハードウェアリソースを持ち、常に検出できるとは限らないため、常に存在します。
setserial
ttyS0には、シリアルポートのものに使用するリソースをマッピングします。linux.die.net/man/8/setserial ただし、COM4を超えるものには通常Linuxがそれを検出し、必要に応じてシリアルデバイスを追加できる十分な補助ハードウェアがあるため、これは通常は必要ありません。
データの取得に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