シリアルポートを介してあまりにも多くのアクチュエータ(またはアクチュエータのセット)を処理する必要がある制御システムを設計しています。新しい設計(まだ実装されていません)は、複数のPOSIXスレッドでアクチュエーターを制御することになっています。
これにより、シリアルポートを複数回(複数のスレッドで)開くことができますか?はいの場合、同期書き込み/非同期読み取りメカニズムを作成します。シリアルポートに直接データを書き込むことができるnスレッドM[0]があります。M[n-1]シリアルポートから直接読み取ることは想定されていません。代わりに、スレッドRはループ内のポートからデータを読み取りwhile(true)、それを待機している対応するスレッドにデータを提供することになっています。(データの準備ができて、それがスレッドM[i]に属しているときに、応答を待機しているウェイクアップ)i
複数のスレッドでシリアルポートに書き込むことができるかどうかは、すべて質問に依存します。
注:現在、大学のメカトロニクスラボのデバイスにアクセスできないため、シリアルポートの動作をテストできません。
Xenomaiリアルタイムサブシステムでパッチされたカーネル2.6.38-8を使用しています(重要な場合)
シリアルポートと通信する従来のLinuxの方法にコードを移植しています。(開く/dev/ttyS0、ボーレートを設定する、、read()などwrite())現在、シリアルポートとの通信にはサードパーティのライブラリが使用されています。