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

と表示されれば成功です。

Old Version


Up:Tutorial?     Previous:サービスプロバイダの作成     Next:画像、距離センサデータ取得

Counter: 1252, today: 1, yesterday: 0

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2013-03-29 (Fri) 18:43:33 (4036d)