オリジナルのデータ型を使ったDataPortのプログラミング


自作のデータ型を使いたくなるときがあります.
そのときは,データ型を定義するためのIDLファイルを記述し,それをRTC Builderに読み込ませることでRTCを作ります.

似たようなデータ型が無いか調べる

これが一番大事な作業で,誰かが同じデータ型を定義していないか調べます.
・RTC Builderのデータポートのデータ型一覧を見ます.
共通インターフェース仕様書を見ます.
・同じ目的のRTCが無いか見ます.
とにかく,「オレオレデータ型」を作っては行けません.最後につらくなるのは自分です.

データ型の定義

IDLファイルを書きます.IDLの文法には,CORBAの入門書とかを参考にしてもらうのがいいと思います.

// TestIDL.idl

module ssr {

  struct TestStruct1 {
    long value1;
    float value2;
  };

  typedef sequence TestSequence1;
  
  struct TestStruct2 {
    TestStruct1 header;
    TestSequence1 data;
  };
};

ほとんどC言語です.
・module ・・・ネームスペースのようなもので,つけておいた方が,万が一,名前がバッティングした際に助かります.
・sequence< ? > ・・・可変長の配列を定義する部分です.TimedLongSeqとかは,これを使っていた訳です.
・struct ・・・構造体です.構造体やシーケンスは再起的に定義できます.
・基本データ型・・・long, short, floatなどが使えます.詳しくはCORBAの入門書で.

IDLを読み込む設定

Eclipseを開き,設定画面を開きます.Macだと,Eclipse > Prerefenceです.Winだと,ツール>プロパティ...だったかな.

そこで,RTC Builderを選択すると,下図のような画面になるので,先ほどのIDLファイルが配置されているフォルダを選択します.
Preferences_と_RTC_Builder_-_Eclipse_SDK

Eclipseを再起動すると,読み込まれるはずです.

RTCを作ってみる

通常の手順でRTCを作れます.プロジェクト名を入れて・・・
RT-Component_Builder_Project_と_RTC_Builder_-_Eclipse_SDK

on_executeをonにして・・・
RTC_Builder_-_IDLTest01_RTC.xml_-_Eclipse_SDK 2

ここで,データポートを加えると,自分で加えたデータ型を参照することができるようになります.
RTC_Builder_-_IDLTest02_RTC.xml_-_Eclipse_SDK

問題としては,C++言語版のRTCを生成すると,生成されたRTC内のidlフォルダにあるCMakeLists.txtにバグがあって,うまくcmakeできません.

対応方法はEclipseのヘルプメニューから選択できるアップデート機能を行うか、以下のように,最後の4行をコメントアウトすることです.
CMakeLists.txt_と_idl_と_Updating_Software_と_RTC_Builder_-_IDLTest01_RTC.xml_-_Eclipse_SDK

簡単ですが,以上です.