[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 メーリングリストの案内