GNU/Linux >> Linux の 問題 >  >> Linux

使用されているシリアルポートを見つける方法は?

質問:

シリアルポート(別名RS-232)を介してデバイス(GSMモデムなど)を接続しましたが、/dev/のどのファイルを使用しているかを確認する必要があります このデバイスと通信できるようにするために、このデバイスはファイルシステムに接続されていました。残念ながら、/dev/には新しく作成されたファイルはありません dmesgにも何も表示されません 出力。ですから、これは難しい質問のようです。

背景:

シリアルデバイスを使ったことがなかったので、昨日、必要が生じたときにGoogleで試してみましたが、何も役に立ちませんでした。数時間シークに費やしましたが、誰かに役立つ可能性があるため、見つかった回答を共有したいと思います。

承認された回答:

残念ながら、シリアルポートはPlugNPlayではないため、カーネルはどのデバイスが接続されているかを認識しません。 HowToを読んだ後 チュートリアル実用的なアイデアがあります。

/dev/ OSのようなUNIXのディレクトリには、 ttySnという名前のファイルが含まれています (nは数字) 。それらのほとんどは既存のデバイスに対応していません。どれが実行されるかを見つけるには、コマンドを発行します:

$ 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

上記は私のPCの出力例です。いくつかのシリアルポートの初期化を確認できます:

ttyS0ttyS1ttyS4ttyS5

そのうちの1つは、デバイスが接続されると正の電圧になります。したがって、ファイル/proc/tty/driver/serialの内容を比較します。 デバイスが接続されている場合と接続されていない場合で、 ttySを簡単に見つけることができます。 私たちのデバイスに関連しています。だから、今やる:

$ sudo cat /proc/tty/driver/serial> /tmp/1

デバイスのプラグを抜く

$ sudo cat /proc/tty/driver/serial> /tmp/2

次に、2つのファイルの違いを確認します。以下は私のPCの出力です:

$ 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

3つの数値をdmesg出力と比較することで、どちらがポートであるかを判別できます。

[    0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

したがって、デバイスは/dev/ttyS0です。 、ミッション達成!


Linux
  1. エイリアスコマンドで`which`を使用する方法は?

  2. 特定のデバイスのカーネルモジュールを見つける方法は?

  3. Linux –シリアルポートを使用してプロセスを見つける方法は?

  1. シェル - コマンドのディレクトリを見つける方法は?

  2. findコマンドで正規表現を使用するには?

  3. どの /dev/ttyS* が自分のシリアル ポートかを知るにはどうすればよいですか?

  1. Linux の特定のポートで netstat を使用する方法

  2. シリアルポートのトラフィックを監視するにはどうすればよいですか?

  3. JavaがインストールされたフォルダでJavaのバージョンを見つける方法は?