ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
以前の記事にコメントがあったようなので補足しておきます。
コメントのやりとりのなかで、1つのECで複数のRTCを駆動させるには複合コンポーネントを使うのが手っ取り早いと書きましたが、手っ取り早くない方法をやっておきます。
今回のサンプルはここからダウンロードできます。
今回のサンプルではtest1(DebugのTest1Comp.exe)とtest2(DebugのTest2Comp.exe)を立ち上げて、TestECandComponent.exeを立ち上げるとtest1の実行コンテキストからtest1を解除してtest2の実行コンテキストに関連付けます。
test1、test2はともにonExecuteが呼び出されると"test1"、"test2"と表示します。
test1とtest2は同じ実行周期に設定していますが、test1の方が処理が重く、test1は実行周期を大幅にオーバーするようになっています。
普通にアクティブにすればtest1とtest2は完全に非同期になります。
しかし、TestECandComponent.exeを実行後にアクティブにすると同期になることが試していただければわかると思います。
今回のプログラムを見てみます。
ポイントは、
ExecutionContextList1[0]->remove_component(test1._ptr()); //test1をECから解除
ExecutionContextList2[0]->add_component(test1._ptr()); //test1をtest2のECに関連付け
です。
今回の方法だと自分でプログラムを書かないといけないので面倒くさいですが、RTSEでいちいち操作しなくて良いので一旦作ってしまえば楽かもしれないです。
では、今度こそ2週間ほど休みます。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
コメントのやりとりのなかで、1つのECで複数のRTCを駆動させるには複合コンポーネントを使うのが手っ取り早いと書きましたが、手っ取り早くない方法をやっておきます。
今回のサンプルはここからダウンロードできます。
今回のサンプルではtest1(DebugのTest1Comp.exe)とtest2(DebugのTest2Comp.exe)を立ち上げて、TestECandComponent.exeを立ち上げるとtest1の実行コンテキストからtest1を解除してtest2の実行コンテキストに関連付けます。
test1、test2はともにonExecuteが呼び出されると"test1"、"test2"と表示します。
test1とtest2は同じ実行周期に設定していますが、test1の方が処理が重く、test1は実行周期を大幅にオーバーするようになっています。
普通にアクティブにすればtest1とtest2は完全に非同期になります。
しかし、TestECandComponent.exeを実行後にアクティブにすると同期になることが試していただければわかると思います。
今回のプログラムを見てみます。
ポイントは、
ExecutionContextList1[0]->remove_component(test1._ptr()); //test1をECから解除
ExecutionContextList2[0]->add_component(test1._ptr()); //test1をtest2のECに関連付け
です。
今回の方法だと自分でプログラムを書かないといけないので面倒くさいですが、RTSEでいちいち操作しなくて良いので一旦作ってしまえば楽かもしれないです。
では、今度こそ2週間ほど休みます。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする
無題
私の先のコメント(悩み)を見抜いてくださっているようで,しかも親切にコード例まで示してくださるとは.本当にありがとうございます.Nobuさんのお休み2週間は,当方としては残念ですが,再開されることを期待しています.
補足ですが
少し説明不足だったかもしれないので補足しておきます。
複合コンポーネントを使う方法としては、
1)RTSEでシステムを作成して、RTSE上でシステムを復元する
2)rtshellのコマンド(rtcomp?)で複合コンポーネントを作成する
3)1)で作成したシステムをrtshellのコマンド(rtresurrectでしたっけ?)で復元する
があると思います。
このうち、2)、3)はバッチファイルにrtshellのコマンドとRTCを立ち上げるコマンドを書いておけば、手間が省けるかもしれません。試してないので定かではないですが。
今回の記事の方法でも、今回のサンプルの部分のみではなく、Python版のサンプルのrun.pyみたいに一発でRTCの立ち上げからアクティブ化までできるようになれば手間が省けるかと思います。
複合コンポーネントを使う方法としては、
1)RTSEでシステムを作成して、RTSE上でシステムを復元する
2)rtshellのコマンド(rtcomp?)で複合コンポーネントを作成する
3)1)で作成したシステムをrtshellのコマンド(rtresurrectでしたっけ?)で復元する
があると思います。
このうち、2)、3)はバッチファイルにrtshellのコマンドとRTCを立ち上げるコマンドを書いておけば、手間が省けるかもしれません。試してないので定かではないですが。
今回の記事の方法でも、今回のサンプルの部分のみではなく、Python版のサンプルのrun.pyみたいに一発でRTCの立ち上げからアクティブ化までできるようになれば手間が省けるかと思います。