[openrtm-users 00506] onWriteConvert

Ando Noriaki n-ando @ aist.go.jp
2008年 7月 8日 (火) 19:48:18 JST


産総研 安藤です

高エネ研の安様より以下のようなメールをいただきましたので、
参考までにOpenRTM MLに転送させていただきます。


---------- 転送されたメッセージ ----------
差出人: Yoshiji Yasu <Yoshiji.Yasu @ kek.jp>
日付: 2008/07/08 10:02
件名: [rtm-kek 00535] onWriteConvert
宛先: rtm-kek @ m.aist.go.jp


安です。onWriteConvertについて質問です。

proc1, proc2, proc3という3つのコンポーネントの中のproc2にコールバックを
入れようとしています。やりたいことは、proc2のInPortの RingBufferのwrite
のタイミングで、proc2のメインメソッドをすっ飛ばして、write時のコールバッ
クでOutPortのwrite を実行してしまうということです。

InPortCorbaConsumer.hで
status = _ptr()->put(tmp);
でCORBAのデータ転送とRingBufferのputメソッドを行います。
OutPort.h, InPort.hのwriteメソッドの中で、
status = this->put((*m_OnWriteConvert)(value));
という形でコールバックが呼ばれます。

proc1はOutPortのwriteをすると、RingBufferにput/getしてから _ptr()->putで
CORBA転送しproc2のRingBufferにデータが書き込まれます。書き込まれた
タイミングでコールバックするには、InPortCorbaConsumer.hにコールバックす
るような仕掛けがないといけないのではないでしょうか?

コールバックの例題をみると、
OnWriteConvertの場合は、proc1ないしはproc2がOutPortのwriteを行うときに
フィルタープログラムをコールバックに入れて転送するという使い方が自然のよ
うですし、
onReadConvertの場合は、proc2ないしはproc3がInPortのreadを行うときにやは
りフィルタープログラムをコールバックに入れて読み込むという使い方が自然の
ようです。

私の理解が間違っているかもしれません。

--
Yoshiji Yasu @ Online group, Institute of Particle and Nuclear Studies,
High Energy Accelerator Research Organization ( KEK ),
E-mail : Yoshiji.YASU @ kek.jp





-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
 知能システム研究部門 タスクインテリジェンス研究グループ
 〒305-8568 茨城県つくば市梅園1-1-1 中央第2
 TEL: 029-861-5981 FAX: 029-862-6631
 n-ando @ aist.go.jp, n-ando @ ieee.org



openrtm-users メーリングリストの案内