[openrtm-users 00562] Re: RT コンポーネントの動的リンクについて

Masayuki Shimizu masayuki.shimizu @ aist.go.jp
2008年 7月 31日 (木) 15:02:23 JST


静岡大 清水です。

> ・コンポーネントが持っているポートの情報を外部アプリケ
ーションから取得する際に、
> 
> 
>  ポートリスト上の配列の位置を指定するのではなく、ポー
ト名文字列を指定して
>  取得する事は可能でしょうか?

現在のところ、そのようなヘルパー関数はないですが、
簡単に自作できるかと思います。

1. RTObject::get_ports()でPortインタフェース
のリストを取得する。
2. 各ポートのget_port_profile()でPortProfile
を取得する。
3. PortProfileのnameでマッチングをとり、
該当するポートの番号を取得する。
4. そのポート番号のPortインタフェースあるいは
PortProfileをreturnする。

以上のようにすればよいと思いますが、
ポートの名前はUniqueではないので、
同名のものが複数ある場合は名前では区別がつかない
ことに注意する必要があります。


> ・外部アプリケーションからコンポーネントをアクティブ化
する際に、
>  get_contexts()関数を使用して
> ExecutionContextList_var の情報を取得し、
>  activate_component()
> をコールする、用にしたのですが、コンパイルが
>  通りませんでした、使用しているクラスが間違っているの
でしょうか?
>
 
ソースがないのでエラー原因はわかりませんが、
以下のような簡単なコードでactivateできると思います。

ExecutionContextList_var eclist = comp->get_contexts();
eclist[0]->activate_component(comp);

清水



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