2017-08-30 4 views
0

私の波形上でconfigure()をオーバーライドする必要があります。マニュアルで提案されているように、私の[h、cpp]ではPropertySet_impl :: configureをオーバーライドしましたが、 PropertySet_impl :: configureをオーバーライドします。これは、Pythonスクリプトを使用してコンポーネントを設定するときに機能しますが、Domainプロファイルで.prf.xmlを使用してDomainManagerによって初期設定が呼び出されたようには見えません。初期設定でconfigureを無効にする

あなたはこの初期設定で何らかの他の方法で送信しますか?これらの設定も上書きできますか?

答えて

1

configureをオーバーライドする代わりにカスタム構成ロジックを必要とするプロパティーに対してsetPropertyConfigureImplを使用してみてください。私はこれがプロパティを設定するための最初の呼び出しで呼び出されると考えています。

+0

ありがとうございました。私は2.1でこの新機能に気づいていませんでしたが、2.1マニュアルに説明されています。私はRedHawkに設定を管理させ、いくつかの追加の処理をさせたいと考えていましたが、初期設定が表示されないのでsetPropertyConfigureImplかregisterPropertyListenerを試してみます。これらのうちの1つが、私が必要とすることをすることを可能にするはずです。 –

1

コンポーネントはREDHAWK 2.0からinitialize()メソッドを呼び出す前に、コンポーネントの作成時に一度呼び出される新しいメソッドinitializeProperties()をサポートしています。種別 "property"のプロパティは、この呼び出しによって、指定されていれば上書きされた値を使って初期値が与えられます。従来の "configure"種類のプロパティは、initialize()の後にconfigure()を呼び出しても初期化されます。

あなたのプロパティの設定機能が十分であれば、その方法をお勧めします。初期化時に呼び出されると思われる場合は、REDHAWKのconstructor()メソッドではなく、C++コンストラクタでそれらを設定したいと思うでしょう。

質問に基づいて、プロパティリスナーはおそらく適切ではありません。プロパティの変更通知はinitializeProperties()によって起動されず、configure()のみがトリガされます。 C++インターフェイスはaddPropertyListener()です。 registerPropertyListener()は、プロパティの変更の外部通知をサポートするCORBAメソッドです。

関連する問題