Up:Tutorial? Previous:サービスプロバイダの作成 Next:画像、距離センサデータ取得
※このチュートリアルはSIGVerse v2.1.0以降対応です。
前回のメッセージ送信(sendMsg)はサーバを介してコントローラにメッセージを送信しました。 サービスプロバイダはサーバを介さず直接コントローラへメッセージを送信することもできます。
まずサーバ側でコントローラを作成します。
ServiceTest.cpp
関数connectToServiceでサービスプロバイダ"MyService"に接続します。 これによりSIGVerseサーバを介さずにコントローラとサービスプロバイダで直接データの送受信を行うことができるようになります。
サービスプロバイダとの接続が完了すると関数sendMsgToSrvでサービスプロバイダ"MyService"にメッセージを送信します。
コントローラはコンパイルしておきます。
$ ./sigmake.sh ServiceTest.cpp
ロボットだけが登場する世界ファイルを作成します。
ServiceTest.xml
次にサービスプロバイダのサンプルです。 クライアント側で前回(メッセージ送信ツールの作成?)と同じようにVC++2008で新しくプロジェクトを作成し、コードを以下のようにします。
MyService.cpp
サーバ接続時の"hostname"と<portnum>は自分の環境に合わせて置き換えてください。
このサービスプロバイダは常にコントローラからのメッセージを受け付けます。 そしてコントローラから"Hello"というメッセージが届くと"Hello! this is MyService"というメッセージをコントローラに返します。
sendMsgToCtrという関数を使うことによりSIGVerseサーバを介さずに直接コントローラにメッセージを送信することができます。
まずSIGVerseサーバを起動します。
$ sigserver.sh -p 9001 -w ./ServiceTest.xml
次にビューワーでシグバースサーバに接続します。シミュレーションを開始し、MyServiceを起動します。
サーバ側で
[SYS] Service: "MyService" is available
と表示されればサービスプロバイダ立ち上げ成功です。
次に"START"ボタンを押してシミュレーションを開始します。
サーバ側で一秒に一回
[MSG] robot_000(0.0.0.0) [MyService] Hello! this is MyService
と表示されれば成功です。
Up:Tutorial? Previous:サービスプロバイダの作成 Next:画像、距離センサデータ取得