自作のデータ型を使いたくなるときがあります.
そのときは,データ型を定義するためのIDLファイルを記述し,それをRTC Builderに読み込ませることでRTCを作ります.
似たようなデータ型が無いか調べる
これが一番大事な作業で,誰かが同じデータ型を定義していないか調べます.
・RTC Builderのデータポートのデータ型一覧を見ます.
・共通インターフェース仕様書を見ます.
・同じ目的のRTCが無いか見ます.
とにかく,「オレオレデータ型」を作っては行けません.最後につらくなるのは自分です.
データ型の定義
IDLファイルを書きます.IDLの文法には,CORBAの入門書とかを参考にしてもらうのがいいと思います.
// TestIDL.idl module ssr { struct TestStruct1 { long value1; float value2; }; typedef sequenceTestSequence1; struct TestStruct2 { TestStruct1 header; TestSequence1 data; }; };
ほとんどC言語です.
・module ・・・ネームスペースのようなもので,つけておいた方が,万が一,名前がバッティングした際に助かります.
・sequence< ? > ・・・可変長の配列を定義する部分です.TimedLongSeqとかは,これを使っていた訳です.
・struct ・・・構造体です.構造体やシーケンスは再起的に定義できます.
・基本データ型・・・long, short, floatなどが使えます.詳しくはCORBAの入門書で.
IDLを読み込む設定
Eclipseを開き,設定画面を開きます.Macだと,Eclipse > Prerefenceです.Winだと,ツール>プロパティ...だったかな.
そこで,RTC Builderを選択すると,下図のような画面になるので,先ほどのIDLファイルが配置されているフォルダを選択します.
Eclipseを再起動すると,読み込まれるはずです.
RTCを作ってみる
ここで,データポートを加えると,自分で加えたデータ型を参照することができるようになります.
問題としては,C++言語版のRTCを生成すると,生成されたRTC内のidlフォルダにあるCMakeLists.txtにバグがあって,うまくcmakeできません.
対応方法はEclipseのヘルプメニューから選択できるアップデート機能を行うか、以下のように,最後の4行をコメントアウトすることです.
簡単ですが,以上です.