WindowsNTターゲットへの実装を例にします。
なお、この実装を行うには、ISaGRAF Ver.4/5開発ツールキット(NSS-I4-PRDK)が必要です。
-
1. ISaGRAF Ver.4/5 NT ターゲットのソースファイルを開発ツールキットからコピーします。
2. Visual C++でプロジェクト MakePrdk.dsw を開きます。
3. 「ファイル」-「新規作成」メニューを開き、WinNT_large\IsaSmpHooksフォルダにWin32 スタティックライブラリISaSmpHookを作成します。
以下の図で設定されているオプションと同様に設定してください。
4. Windowsエクスプローラなどで、Visual C++ が作成したWinNT_Large\IsaSmpHooks ディレクトリ内に SmpHooks.c という名前で新しいファイルを作成します。
5. ターゲット定義ファイル dsys0def.h ファイルに以下の行を追加します。
#define ITGTDEF_KERHOOK_BEGCYCEXEC
この定義により、毎サイクルの最初のフック関数 kerHookBegCycExec() がコールされるようになります。
フック関数にはいくつか種類があります。他のフックの設定に関しては、ISaGRAF Ver.4/5 開発ツールキットのオンラインヘルプ(ProDK.chm)をご覧ください。
6. IsaSmpHooksプロジェクトの設定(ReleaseとDebugの双方)をIsxlHsdプロジェクトと同じになるよう変更します。
7. Visual C++でSmpHooks.c を開き、プロジェクトへ追加します。
8. 下記のコードを追加してください。
/************************************************************************** File: SmpHooks.c Author: GGR - CJ International Creation date: 27-Jun-2001 --- 4.10 Released --- *************************************************************************** ドキュメント: *************************************************************************** 説明: メッセージを表示するための関数 *************************************************************************** Modifications: (who / date / description) ***************************************************************************/ #include <dsys0def.h> static int _CNT=0; /**************************************************************************** function : kerHookBegCycExec description : 各サイクルの最初にコールされるフック関数 warning : ****************************************************************************/ void kerHookBegCycExec(void) {
_CNT++; if (_CNT==3000) {
_CNT = 0; |