[openrtm-users 00512] Re: onWriteConvert

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


産総研 安藤です

先ほどのメールの回答です。

添付のサンプルをご覧ください。
添付ファイル Pipe.tar.g_ は Pipe.tar.gz にリネームして解凍してください。

このコンポーネントはTimedLong型のInPort/OutPortをひとつづつもち、
InPortに入ってきたデータをOutPortへコールバックを使って即座に
伝送するものです。

コンパイル後、ConsoleInとConsoleOutの間にはさんで接続してください。
Pipeコンポーネントはコールバックを使用しているので、
onExecuteでデータの読み込み+書き出しをしなくても、
InPortから入ったデータが即座にOutPortから出て行きます。
したがって、Active化しなくても動作します。



2008/07/08 19:48 Ando Noriaki <n-ando @ aist.go.jp>:
> 産総研 安藤です
>
> 高エネ研の安様より以下のようなメールをいただきましたので、
> 参考までに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
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
 知能システム研究部門 タスクインテリジェンス研究グループ
 〒305-8568 茨城県つくば市梅園1-1-1 中央第2
 TEL: 029-861-5981 FAX: 029-862-6631
 n-ando @ aist.go.jp, n-ando @ ieee.org
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: Pipe.tar.g_
型:         application/x-gzip-compressed
サイズ:     2329633 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20080708/14484f38/attachment-0001.bin>


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