分類:[C#]
2008/12/09(Tue) 22:06:45 編集(投稿者)
すみません、行き詰ってます。
前に質問した者ですが、現在、C#でGPIBインターフェイスで制御しようとしています。
使用しているインターフェイスボードはInterface社の物です。
現在、機器が動作中より停止した際に発するSRQを取得しようとしています。
その際にポーリングを行わなければならないのですが、やり方を読んでもよくわかりません。
GpibSetSrqEvent……指定番号のボードからのSRQコールバックイベントを登録します。
GpibWaitSrqEvent……指定番号のボードからのSRQコールバックイベントを待ちます。
GpibKillSrqEvent……指定番号のボードからのSRQコールバックイベントの登録を解除します。
インターフェイス社の物では、上記の順番で行われるようなのですが、最初のGpibSetSrqEventから詰まってしまっています。
これにはC言語の解説しかなく、
***********************************************
●C言語
#include "GPC43042.H"
int GpibSetSrqEvent(
ULONG ulBoardNo, // ボード番号
LPSRQCALLBACK lpOnSrqProc, // コールバック関数のアドレス
DWORD dwUser // ユーザパラメータ
);
lpOnSrqProc コールバック関数のアドレスを指定します。説明「コールバック関数」を参照ください。
dwUser コールバック関数に渡す任意の32ビットデータを指定します。
***********************************************
まずここで疑問が…何を基準に任意のビットデータを指定すればよいのかわかりません。
また、コールバック関数は、
***********************************************
●C言語
void CALLBACK lpOnSrqEvent(
ULONG ulBoardNo, // ボード番号
DWORD dwUser // ユーザデータ
);
コールバックルーチンの関数型 LPSRQCALLBACK は下記のように定義されます。
#define LPSRQCALLBACK VOID WINAPI
typedef void (WINAPI *PLPSRQCALLBACK)(ULONG ulBoardNo, DWORD dwUser);
【パラメータ】
パラメータ
説 明
ulBoardNo
イベントが発生したボード番号が格納されます。
dwUser ユーザデータを指定します。
【戻り値】
この関数に戻り値はありません。
***********************************************
このようにコールバック関数でもユーザーデータが必要となります。
最初にコールバック関数を宣言するのですが、C言語ではvoidで宣言されていて、C#ではどのように宣言したらいいのかわかりません。
GPIBという特殊な環境ではありますが、何か手がかりになるようなことなんでも結構ですのでアドバイスいただけたらと思います。
また、仕様など、なにかご不明な点がございましたら、わかる範囲で答えます。
よろしくお願いします。