7

シリアルポートを介して接続を開き、着信コマンドを「リッスン」するプログラムをCで作成します。その後、何らかのアクションを実行してステータスを報告します。

接続はRS232(シリアルポート)を介して行われる予定であり、どのポートを開くかを知る方法を理解しようとしています。

Windowsを使用しているときに、usb-serialデバイスを接続すると、デバイスマネージャーに「ProlificUSB-to-Serial Comm Port(COM4)」が表示されますが、Linux側では変更が表示されません。/sys/class/ttyまたは/dev領域、私は常に現在を通して見てttyS0います(私が読んだものに基づいてシリアルttyS7の略を想定しています)。S

では、どちらに接続するかをどうやって知ることができますか?

編集OpenSUSE12.1ボックス(3.1カーネル)でこれを開発し
ている間、最終的なプログラムは2.4Linuxカーネルを実行しているボード上のuCLinuxで実行されるので、古いカーネルで動作する純粋なCソリューションを探しています

参考までに:この投稿/sysへの回答に記載されているファイルシステムは、2.6カーネルまで存在しませんでした。私の制約により、2.4カーネルで利用可能なものに固執する必要があります。

4

3 に答える 3

3

このコマンドdmesgは、モジュールがプラグインされると、デバイス名を示すカーネル メッセージを表示します。

ファイル システムは、Windows のデバイス マネージャーの/procようなものです - どこかに tty デバイスのリストがあります。

于 2012-10-04T20:26:33.113 に答える
1

私が使用した 2 つのこと: (a) コントロール ライン (DTR、DSR など) を探し、(b) 「すべて」のポートを開き、どのポートがアクティブに見えるかを調べます。後者の場合、シリアル デバイスにメッセージを送信して応答させることができれば役に立ちます。これは明らかに、デバイスがメッセージに応答する場合にのみ機能します。

于 2012-10-04T20:23:22.897 に答える
0

チェックアウト-代わりに の/proc/tty/driver/serialような uart が表示され、既存のポートの場合は > 0 である必要があります。どのポートが使用されるかを推測する必要がある場合は、使用可能なすべてのポートを開きます。その後、必要に応じてポートを設定する (ボーレート、パリティ、ビットなど) か、着信ボーレートなどを推測する必要があります。16550Aunknownrx

于 2012-10-04T22:02:59.553 に答える