■VB.NET用
Dim wMsg As Short
Dim hWnd As Integer
Dim Ret, SrqOn As Integer
wMsg = WM_USER + &H30S ' 0x400~0x7FFFの任意の番号
' WM_USER = 0x400
hWnd = Handle.ToInt32 ' Handleは現在実行中のプロシージャのハンドル
SrqOn = 1 ' イベント発生
Ret = GpSrqEventEx(hWnd, wMsg, SrqOn)
' イベントを受け取るルーチン
Select Case message ' messageは実行中のプロシージャが受け取る第2引数
Case WM_USER + &H30: ' WM_USER + 0x30はGpSrqEventExで設定した値
... ' 必要な処理を記述
Ret = GpPoll(cmd, fstb)
...
Ret = GpSrqOn()
End Select
■C言語用
WORD wMsg;
HANDLE hWnd;
DWORD Ret, SrqOn;
wMsg = WM_USER + 0x30; /* 0x400~0x7FFFの任意の番号 */
/* WM_USER = 0x400 */
hWnd = hDlg; /* hDlgは現在実行中のプロシージャのハンドル */
SrqOn = 1; /* イベント発生 */
Ret = GpSrqEventEx(hWnd, wMsg, SrqOn);
/* イベントを受け取るルーチン */
switch(message){ /* messageは実行中のプロシージャが受け取る第2引数 */
case WM_USER + 0x30: /* WM_USER + 0x30はGpSrqEventExで設定した値 */
... /* 必要な処理を記述 */
Ret = GpPoll(cmd, fstb);
...
Ret = GpSrqOn();
break;
}
■C#用
short wMsg;
int hWnd;
uint Ret, SrqOn;
wMsg = WM_USER + 0x30; /* 0x400~0x7FFFの任意の番号 */
/* WM_USER = 0x400 */
hWnd = this.Handle.ToInt32(); /* this.Handleは現在実行中のプロシージャのハンドル */
SrqOn = 1; /* イベント発生 */
Ret = gpib.SrqEventEx(hWnd, wMsg, SrqOn);
/* イベントを受け取るルーチン */
switch(message){ /* messageは実行中のプロシージャが受け取る第2引数 */
case WM_USER + 0x30: /* WM_USER + 0x30はgpib.SrqEventExで設定した値 */
... /* 必要な処理を記述 */
Ret = gpib.Poll(cmd, fstb);
...
Ret = gpib.SrqOn();
break;
}
■Python用
wMsg = ctypes.c_ushort()
Ret, SrqOn = ctypes.c_ulong(), ctypes.c_ulong()
wMsg.value = WM_USER + 0x30 # 0x400~0x7FFFの任意の番号
# WM_USER = 0x400
hWnd = ctypes.windll.user32.FindWindowW(0, "Name") # "Name"は現在実行中のプロシージャのキャプション
SrqOn.value = 1 # イベント発生
Ret.value = GpibPy.GpSrqEventEx(hWnd, wMsg, SrqOn)
# イベントを受け取るルーチン
# messageは実行中のプロシージャが受け取る第2引数
if message == WM_USER + 0x30: # WM_USER + 0x30はGpSrqEventExで設定した値
... # 必要な処理を記述
Ret.value = GpibPy.GpPoll(cmd, fstb)
...
Ret.value = GpibPy.GpSrqOn()