[openrtm-staff:1541] RTCBが生成するjavaのRTCのデータポートの変数について

片見剛人 t-katami @ aist.go.jp
2018年 2月 19日 (月) 16:54:59 JST


グローバルアシスト 坂本 様

お世話になっております。
片見です。

大阪電通大の升谷様か
データポートの変数名に関する問い合わせがあり、
対応しております。

「m_名前_val.data」と「m_名前.v.data」のどちらを
使ってよいかわからず、混乱しているようです。

「m_名前.v.data」を使うように
回答しようと思いますが、
問題ないでしょうか?
また、RTCBの生成でも
「m_名前_val」をなくすことも
考えております。
何か不都合が発生するようであれば、
ご指摘をお願います。


例えば、TimedLong型のInPortの場合、
RTCBでは変数は以下のように
宣言されます。
    protected TimedLong m_名前_val;
    protected DataRef<TimedLong> m_名前;
    protected InPort<TimedLong> m_ポート名;
コンストラクタには、
        m_名前_val = new TimedLong(new RTC.Time(0,0),0);
        m_名前 = new DataRef<TimedLong>(m_名前_val);
        m_名前In = new InPort<TimedLong>("名前", m_名前);
と記述されます。
ここで、「m_名前_val」と「m_名前」があり
混乱してるのだと思います。
また、サンプルコンポーネントのSimpleIOでは
InPortの場合(ConsoleOutImpl)、
「m_名前.v.data」からデータを読み取り、
OutPortの場合(ConsoleInImpl)、
「m_名前_val.data」にデータを設定して出力しており
これも混乱の原因になっているのではと思います。

コンストラクタの部分を以下のようにすると
「m_名前」だけで行けると思うのですが
いかがでしょうか?
        m_名前 = new DataRef<TimedLong>(new TimedLong(new RTC.Time(0,0),0));
        m_名前In = new InPort<TimedLong>("名前", m_名前);

どうぞ
よろしくお願いいたします。





More information about the openrtm-staff mailing list