拡張モジュール作成DLL MAKE
拡張モジュールについて
- SocketDebuggerでは、ユーザが自由な通信仕様に従ってテストを行うことが可能です。
デフォルトの設定だけでは実現不可能なビジネスロジックを、DLLで提供することにより可能となります。 - 例えば、ある通信伝文を受信した際に、その内容に応じた応答伝文を返したり、他のサブシステムのもつデータを参照して、その結果を応答したりすることができます。
- この機能は無料版であるSocketDebuggerFree、SerialDebuggerFreeでも利用できます。
拡張モジュール作成手順概要
- DLL内部で、1本のコールバック用関数を用意します。
そのコールバック関数がSocketDebugger本体から状況によりコールされるため、データの受け渡しや、状況に応じた挙動を指定します。 - また、DLL内で設定ウィンドウを表示し、その設定内容を本体に渡すことにより他の通信設定と同様に保存が可能となりプロジェクトに応じた設定可能な拡張処理の作成を行うことができます。
拡張モジュール作成手順
- 拡張モジュールの作成方法について記述します。
※ここでは製作環境としてVisual C++6.0を用いてご説明いたします。 - プロジェクトを作成する
- Visual C++を起動し、「ファイル」→「新規作成」でプロジェクトタブを選択します。
- MFC AppWizard (dll)を選択し、DLLの名前を入力します。
(ここではSampleSDGとしますが、自由に設定してください。)

- ウィザード設定 ステップ 1/1
- DLLの設定で MFCのスタティックライブラリを指定します。

- 定義ファイルのインクルードとコールバック関数の記述
- 以下のヘッダーファイルをダウンロードして下さい。
※ヘッダーファイル内にも使い方の説明がありますのでそちらも参照下さい。
SDGDLLEX.H - SampleSDG.cppを開いて、SDGDLLEX.Hをインクルードします。
- コールバック関数の雛形をSampleSDG.cppの最後に追加します。
- SampleSDG.defファイルにコールバック関数を定義します。
- 以上でプログラムの雛形が完成です。
まずはここまででコンパイルが通ることを確認してください。
- 関数作成
- 以下のヘッダーファイルをダウンロードして下さい。
※ヘッダーファイル内にも使い方の説明がありますのでそちらも参照下さい。 - 今回サンプルで作成する関数の仕様は以下とします。
- 上記仕様に従ってプログラミングを行います。
- 本プログラムをコピーしてビルドしてください。
生成されたDLLをSocketDebuggerと同じフォルダに格納し、設定ダイアログから拡張DLLを選択すれば、実行可能です。
なお、動作設定で拡張動作を選択する必要があります。
- 定義済みマクロ・定数説明
- [4.関数作成]までの説明で拡張モジュールを作成する事は可能ですが、上記プログラムで使用されている定義済みマクロや定数について説明します。
マクロや定数は[3.定義ファイルのインクルードとコールバック関数の記述]でインクルードしたSDGDLLEX.H内に定義されています。 - まずは以下の2行です。
SDGDLL_VERという名称でバージョン情報を定義し、コールバック関数の中でMC_EV_GETVERを記述することで、SocketDebuggerからDLLのバージョン要求があった場合に自動的に定義したバージョン情報を返すことが可能です。
- 次に以下の記述ですが、これは上記のバージョン定義と同様でDLLの説明を自動的にSocketDebuggerに返す事が可能です。
なおMC_SDGHEAD()内のテキストは自由に変更することが可能です。
- 次にコールバック関数内の最初に記述されているMC_MODULEUSEですが、取得した引数を実際の処理で使用されるSDGDLLSTRUCT型に変換しています。
これは以下の2行と同じ意味になります。
以降の処理で登場するdestDataとsrcDataという変数はここで宣言された物になります。
- なお、実際のパラメータ代入はMC_EV_DEFAULTというマクロで行われます。
- データ受信と書かれた以下の行ですが、これはSocketDebuggerからどのような要求(イベント)でコールバック関数が呼び出されたのかを判断しています。
- SDGDLL_ONRECEIVEというのはデータ受信要求(イベント)を表しており、同様にSDGDLL_ONCONNECTなら通信接続完了、SDGDLL_ONCLOSEであれば通信切断となります。
それ以外の要求はSDGDLLEX.Hの中をご確認下さい。
少し前に説明しましたMC_EV_GETCOMMENTやMC_EV_GETVERの中では同様の方法でSocketDebuggerからの要求を判別しています。 - 最後に以下の4行ですが、これはSocketDebuggerに対して通信相手にデータを送信するように要求しています。
SDGDLL_REQSENDが送信要求のコマンドになり、それ以外は送信相手と送信データを指定しています。
送信相手の指定方法等もSDGDLLEX.Hに記載しております。
- マクロのパラメータや戻り値についてはSDGDLLEX.H内で説明しておりますのでそちらをご確認下さい。
拡張DLL公開
- ここで作成したサンプルは、ダウンロードページに格納しています。
最も簡単な応答プログラムとして活用いただけるのではないかと思います。
[ ダウンロード ] - [ 拡張ライブラリ ] - 作成した拡張DLLについて、よろしければ本サイトで公開いたしますのでその場合はご連絡ください。