*メッセージ送信ツールの作成(.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:[[メッセージ送受信]]