このサンプルは、OpenRTM-aistのC++版、Python版、Java版に付属しています。
ServicePortの使用方法を示したサンプルです。以下に示すIDLを使用してサービスを定義しています。
typedef sequence<string> EchoList; typedef sequence<float> ValueList; interface MyService { string echo(in string msg); EchoList get_echo_history(); void set_value(in float value); float get_value(); ValueList get_value_history(); };
SimpleServiceは、MyServiceConsumerからコマンドを送り、MyServiceProviderでそれを処理させるというサンプルです(※正確には、コマンドの解釈はConsumer側であり、Provider側の関数を呼び出す形で実装されています)。 MyServiceConsumerとMyServiceProviderの対応するポートをRTSystemEditor上で接続し、両コンポーネントをアクティベートします(ActivateするのはConsumer側コンポーネントだけでもよい)とConsumer側プロンプトにコマンド一覧が表示されるので、適当なコマンドを入力してください。Provider側の応答がプロンプト上で観察できます。
コンポーネントの起動はOSやOpenRTM-aistの言語によって異なりますので、以下の表を参考に起動します。
Windowsの場合 | Linuxの場合 | |||
MyServiceConsumerコンポーネント | MyServiceProviderコンポーネント | MyServiceConsumerコンポーネント | MyServiceProviderコンポーネント | |
C++版 | MyServiceConsumer.bat | MyServiceProvider.bat | MyServiceConsumerComp | MyServiceProviderComp |
Python版 | MyServiceConsumer.bat | MyServiceProvider.bat | MyServiceConsumer.py | MyServiceProvider.py |
Java版 | MyServiceConsumer.bat | MyServiceProvider.bat | MyServiceConsumer.sh | MyServiceProvider.sh |