0

私はLinux用のドライバー開発の初心者です...。シリアルポートにアクセスするためにTTYを使用してSMSドライバー(シリアルポートからモデムへのATコマンド)を開発しています。ドライバーはCで書かれています。

設計では、モデムからドライバへのメッセージは、次の2つのイベントによってトリガーされる可能性があります。

1)ドライバーによって発行されたATコマンドに応答するステータス(つまり、予期されるメッセージ)

2)新しいSMSの表示(つまり、予期しないメッセージ)

私は2つのスレッドを計画しています。1つはTTYへの書き込み用で、もう1つはTTYからの読み取り用です。読み取りスレッドが着信文字でウェイクアップするようにTTYを構成することは可能ですか(つまり、読み取りスレッドはイベントによってトリガーされ、ポーリングに基づいていません)?

よろしく、Witek

4

1 に答える 1

2

本当に2つのスレッドが必要だとは思いません。典型的なプログラム フロー (AT コマンドの書き込み、応答のチェックなど) は、モノスレッド プログラムでの書き込みとデバッグが容易になります。

chars の待機は call で行うことができselect()ます。tty レイヤーは、主にtcsetattr, tcgetattrand friends システム コールによって設定されます。この呼び出しを使用すると、たとえば、新しい行または各文字で中断するかどうかを構成できます。マンページについては、man termios を参照してください。2 つの大きなオプションは、EOF、EOL Ctrl-C などの特殊文字を処理する (raw モード) か、tty レイヤーによって解釈される (標準モード) かです。

詳細については、シリアル プログラミング ガイドの select の部分、または select のマンページを参照してください。

于 2010-07-30T12:17:35.353 に答える