*メッセージ送信ツールの作成(.NET) [#g29217fd]

**ライブラリの取得 [#nac2be19]
以下のページの.NET DLLの項目にあるサービスライブラリSIGService_<version>_vc2008_NET.zipをダウンロードし、展開します。

(VC++2010を使用する場合はSIGService_<version>_vc2010.zip)をダウンロード 
-[[サービスライブラリ]]

**設定 [#l0e06e82]
***プロジェクト新規作成 [#yd34b304]
VC++(2008)で新しいプロジェクトを作成します。ファイル→新規作成→プロジェクト

新しいプロジェクトのダイアログが立ち上がるとCLRのWindowsフォームアプリケーションを選択し、プロジェクト名を入力してOKボタンを押します。
***dll参照 [#wf35673c]
ソリューションエクスプローラの中のプロジェクトを右クリックして参照を選択します。
共通プロパティのFrameworkと参照を選択し、新しい参照の追加ボタンをクリックします。次に参照タブを選択して、上でダウンロードしたDebugフォルダの中にあるsigverse.dllを選択します。

***ボタン追加 [#j41162f6]
ツールボックスからButtonを選択して適当にボタンを追加します。
#ref(SendMessage1.jpg)

**イベントハンドラ [#d4786251]
ボタンをダブルクリックしてイベントハンドラの中に以下のコードを追加してコンパイルします。
#highlight(cpp){{
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

				 // サービス名を指定してサービスクラスのインスタンスを作成します  
				 sigverse::SIGService srv("MyService");  
  
				 // サーバに接続します  
				 srv.connect("hostname", 9001);    
  
				 // エンティティ"man_000"にメッセージ"Hello"を送信します  
				 srv.sendMsg("man_000", "Hello");  
  
				 // サーバから切断します  
				 srv.disconnect(); 		
			 }
}}


connectの引数で指定するホスト名とポート番号はSIGVerseサーバのホスト名(またはipアドレス)とポート番号に置き換えます。

**ライブラリの設定 [#a9b796c7]
SIGVerseサービスライブラリの設定を行います。
//**ライブラリの設定 [#a9b796c7]
//SIGVerseサービスライブラリの設定を行います。

+ソリューションエクスプローラのプロジェクト名を右クリックし、参照を選択します。
「構成プロパティ」→「C/C++」→「全般」を選択し、「追加のインクルードディレクトリ」に展開したライブラリのincludeフォルダを指定します。&br; &br;
+次に「構成プロパティ」→「リンカ」→「全般」を選択し、「追加のライブラリディレクトリ」に展開したライブラリのlibフォルダのDebugを指定します。
//+ソリューションエクスプローラのプロジェクト名を右クリックし、参照を選択します。
//「構成プロパティ」→「C/C++」→「全般」を選択し、「追加のインクルードディレクトリ」に展開したライブラリのincludeフォルダを指定します。&br; &br;
//+次に「構成プロパティ」→「リンカ」→「全般」を選択し、「追加のライブラリディレクトリ」に展開したライブラリのlibフォルダのDebugを指定します。
(ReleaseモードでコンパイルするときはReleaseを選択します。)&br; &br;
+最後に同じ「リンカ」の「入力」を選択し「追加の依存ファイル」に"SIGService.lib"を追加します。
//+最後に同じ「リンカ」の「入力」を選択し「追加の依存ファイル」に"SIGService.lib"を追加します。



ビルドが正常に行えるか確認してみてください。

**実行 [#zc55d270]
これで準備は整いました。

まずチュートリアルのサンプル[[人間型エージェントの操作]]の「コマンドによるエージェントの操作」をサーバ側で実行します。サーバ側でSIGVerseを起動するときには関数connectの第2引数で指定したポート番号を-pオプションで指定します。

サーバを起動したらビューワーからサーバに接続して"START"ボタンを押してシミュレーションを開始します。この状態でメッセージ送信プログラムを実行してみてください。エージェントがお辞儀したら成功です。

ビューワーからではなくMyServiceからメッセージ"Hello"を送信しました。

*プラグインの登録 [#b3215ae4]
次に作成したサービスをプラグインとしてビューワーに登録し、ビューワーから起動する方法を説明します。

サービスサンプルを以下のように修正します。

MyService.cpp
#highlight(cpp){{
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

				 // サービス名を指定してサービスクラスのインスタンスを作成します  
				 sigverse::SIGService srv("MyService");  

				 // メイン関数の引数からホスト名とポート番号を取得します
				 cli::array<System::String^>^ args = System::Environment::GetCommandLineArgs();

				 // サーバに接続します
				 srv.connect(args[1], System::Convert::ToInt32(args[2]));

				 // エンティティ"man_000"にメッセージ"Hello"を送信します  
				 srv.sendMsg("man_000", "Hello"); 
  
				 // サーバから切断します  
				 srv.disconnect(); 		
			 }
}}

SIGVerseサービスではサーバのホスト名とポート番号がメイン関数の引数として与えられます。


**コンパイル [#l94e75d8]

SIGViewerに読み込ませるようにするため、以下の設定をしてからビルドします。
-ソリューションエクスプローラのプロジェクト名を右クリックし、参照を選択します。「構成プロパティ」→「リンカ」→「出力ファイル」で拡張子を.exeから.sigに変更します。

exeファイルを先に作って後から拡張子を.sigに変更しても同じことです。

**ビューワーへ登録 [#v01acfa7]
ビルドが成功してDebug(もしくはRelease)フォルダにMyService.sigができたら次はビューワーにサービスを登録します。

+まずビューワーを立ち上げます。&br; &br;
+上にあるメニューバーから「Service」→「Add」を選択します。&br; &br;
+サービスリストが立ち上がったら"Add"ボタンを押して作成したMyService.sigをサービスリストに追加します。
#ref(サービスプロバイダの作成/MyService_1.PNG,80%)
+"OK"ボタンを押します。

#highlight(end)
**実行 [#qe5980a6]

先ほどと同様に[[人間型エージェントの操作]]の「コマンドによるエージェントの操作」をサーバ側で実行します。ビューワーからサーバに接続して"START"ボタンを押してシミュレーションを開始します。

人間が手を下した状態になったら、メニューバーの「Service」→「Start」をクリックし、MyService.sigを選択し、サービスを開始します。

エージェントがお辞儀をすれば成功です。

*Old version [#xc430bd6]
[[メッセージ送信ツールの作成(v120330, v1.4.8)]]

----

Up:[[Tutorial]]     Previous:[[HMD+KINECT]]     Next:[[メッセージ送受信]]

Front page   Edit Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes