[openrtm-users 00086] アプリケーションからの入出力ポートのアクセス
Akio Uda
uda @ inc.cl.nec.co.jp
2006年 10月 26日 (木) 13:29:33 JST
いつも御世話になります。宇田@NECシステムテクノロジーです
アプリケーションからコンポーネントの入出力ポートにアクセスする方法
についてお伺いします。
通常、入出力ポートに対するアクセスは入力ポートならm_InPort.read()、
出力ポートならm_OutPort.write()のようにread/writeメソッドを使って
行なわれるかと思いますが、この場合に例えばC++のアプリケーションか
ら外部のコンポーネントを利用しようとすると、その外部コンポーネント
との仲介役を果たすコンポーネントをアプリケーションが生成・所有する
必要が生じるかと思います。
┌──────────┐
│ アプリケーション │
└──────────┘
↑ │
┌───│──│───┐ ┌──────────┐
│┌──│──│──┐│ │┌────────┐│
││ │ │ ││ ││ ││
in ││ │ ↓ ││ out in ││ ││ out
○─┤──→┘ └──→├─○─→○─┤│ │├─○
↑ ││read() write()││ ││ ││ │
│ ││ ││ ││ ││ │
│ │└────────┘│ │└────────┘│ │
│ └──────────┘ └──────────┘ │
│ 仲介コンポーネント 外部コンポーネント │
│ ↓
└←───────────────────────────────┘
入出力ポートのインターフェースには、read/writeの逆相であるput/get
も用意されているようですが、アプリケーションがput/getを使って直接
入出力ポートにアクセスするのは、RTミドルウェアの設計思想上問題ない
のでしょうか?
それともコンポーネント以外のもの(アプリケーション)が入出力データ
フローに直接割込むという意味で、あまり推奨はされないのでしょうか?
┌──────────┐
│ アプリケーション │
└──────────┘
│ ↑
put() │ │ get()
┌←────┘ └────←┐
│ │
│ ┌──────────┐ │
│ │┌────────┐│ │
↓ ││ ││ │
in ││ ││ out
○─┤│ │├─○
││ ││
││ ││
│└────────┘│
└──────────┘
外部コンポーネント
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
z 宇田 安規男 z
z NECシステムテクノロジー株式会社 システムテクノロジーラボラトリ z
z 神奈川県川崎市中原区下沼部 1753 NEC 玉川事業場 9号館 z
z 〒 211-8666 Tel: 044-431-7574 Fax: 044-431-7588 z
z E-mail: uda-axa @ necst.nec.co.jp z
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
openrtm-users メーリングリストの案内