4

シリアルポートを介してあまりにも多くのアクチュエータ(またはアクチュエータのセット)を処理する必要がある制御システムを設計しています。新しい設計(まだ実装されていません)は、複数のPOSIXスレッドでアクチュエーターを制御することになっています。

これにより、シリアルポートを複数回(複数のスレッドで)開くことができますか?はいの場合、同期書き込み/非同期読み取りメカニズムを作成します。シリアルポートに直接データを書き込むことができるnスレッドM[0]があります。M[n-1]シリアルポートから直接読み取ることは想定されていません。代わりに、スレッドRはループ内のポートからデータを読み取りwhile(true)、それを待機している対応するスレッドにデータを提供することになっています。(データの準備ができて、それがスレッドM[i]に属しているときに、応答を待機しているウェイクアップ)i

複数のスレッドでシリアルポートに書き込むことができるかどうかは、すべて質問に依存します。

:現在、大学のメカトロニクスラボのデバイスにアクセスできないため、シリアルポートの動作をテストできません。

Xenomaiリアルタイムサブシステムでパッチされたカーネル2.6.38-8を使用しています(重要な場合)

シリアルポートと通信する従来のLinuxの方法にコードを移植しています。(開く/dev/ttyS0、ボーレートを設定する、、read()などwrite())現在、シリアルポートとの通信にはサードパーティのライブラリが使用されています。

4

1 に答える 1

4

同じシリアルポートを開くことができるのは1回だけです。2番目の試行はAccessDeniedで失敗します。ポートが開かれると、ポートハンドルを使用して、さまざまなスレッドでポートを操作できます。もちろん、これらのスレッド間でポートアクセスを同期する必要があります。

于 2012-10-06T07:28:30.260 に答える