忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[528]  [527]  [526]  [525]  [524]  [523]  [522]  [521]  [520]  [519]  [518
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

例のツールにRTCをリストから選択して起動する機能を追加している所ですが、後は起動したRTCの情報のファイルに保存・復元する機能を実装して、スプラッシュスクリーンの絵を描けば完成です。
まあ後者は別に必須ではないのですが、あった方がかっこいいので描きます。





実装する過程でRTCが終了したかどうか調べるためにComponentActionListenerを使用したのですが、PythonのRTCで謎の怪現象が起こりました。

まず複数のRTCを起動してそれぞれでComponentActionListenerを追加します。
ここではとりあえずPOST_ON_FINALIZE(RTC終了直後)にリスナを設定します。

つまり各RTCに以下のコードを追加します。


self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_FINALIZE, 関数)


そしてどれか1つのRTCを終了させると、通常はそのRTCで設定したリスナのみがコールされるはずですが、何故か起動した全てのRTCで設定したリスナが呼び出されてしまいます。


おそらくですが、ComponentActionListener.pyのクラスComponentActionListenersのpreaction_とかportaction_がクラス変数なのが原因だと思います。なんでインスタンス変数にしなかったのでしょうね?
何らかの理由があってこうなっているとは思うのですが、全く想像がつきません。
それどころかComponentActionListener機能を破綻させているのでかなりまずいと思います。

でも意図的にこういう動作にするようにしているとしか思えないしなあ。
だれかメーリングリストで訊いてください。










にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]