■VB.NET用
Dim Ret, Cmd(31) As Integer
Dim talker, stbyte, Cnt As Integer
Dim Pstb(31) As Integer ' ステータスバイト用配列
Dim Psrq(31) As Integer ' SRQ受信ステータス用配列
Cmd(0) = 2 ' ポーリングする相手機器数
Cmd(1) = 3 ' 相手機器アドレス
Cmd(2) = 4 ' 相手機器アドレス
Ret = GpPollEx(Cmd, Pstb, Psrq)
For Cnt = 1 to Cmd(0)
If (Cnt > Psrq(0)) Then
Exit For
End If
If (Psrq(Cnt) == 1) Then ' SRQが送出されていた場合
talker = Cmd(Cnt) ' SRQを送出した機器のアドレス
stbyte = Pstb(Cnt) ' ステータスバイト
End If
Next
■C言語用
DWORD Ret, Cmd[31];
DWORD talker, stbyte, Cnt;
DWORD Pstb[31]; /* ステータスバイト用配列 */
DWORD Psrq[31]; /* SRQ受信ステータス用配列 */
Cmd[0] = 2; /* ポーリングする相手機器数 */
Cmd[1] = 3; /* 相手機器アドレス */
Cmd[2] = 4; /* 相手機器アドレス */
Ret = GpPollEx(Cmd, Pstb, Psrq);
for (Cnt = 1; Cnt <= Cmd[0]; Cnt++) {
if (Cnt > Psrq[0]) {
break;
}
if (Psrq[Cnt] == 1) { /* SRQが送出されていた場合 */
talker = Cmd[Cnt]; /* SRQを送出した機器のアドレス */
stbyte = Pstb[Cnt]; /* ステータスバイト */
}
}
■C#用
uint Ret;
uint talker, stbyte, Cnt;
uint[] Cmd = new uint[31];
uint[] Pstb = new uint[31]; /* ステータスバイト用配列 */
uint[] Psrq = new uint[31]; /* SRQ受信ステータス用配列 */
Cmd[0] = 2; /* ポーリングする相手機器数 */
Cmd[1] = 3; /* 相手機器アドレス */
Cmd[2] = 4; /* 相手機器アドレス */
Ret = gpib.PollEx(Cmd, Pstb, Psrq);
for (Cnt = 1; Cnt <= Cmd[0]; Cnt++) {
if (Cnt > Psrq[0]) {
break;
}
if (Psrq[Cnt] == 1) { /* SRQが送出されていた場合 */
talker = Cmd[Cnt]; /* SRQを送出した機器のアドレス */
stbyte = Pstb[Cnt]; /* ステータスバイト */
}
}
■Python用
Ret, Cmd = ctypes.c_ulong(), (ctypes.c_ulong * 31)()
talker, stbyte, Cnt = ctypes.c_ulong(), ctypes.c_ulong(), ctypes.c_ulong()
Pstb = (ctypes.c_ulong * 31)() # ステータスバイト用配列
Psrq = (ctypes.c_ulong * 31)() # SRQ受信ステータス用配列
Cmd[0] = 2 # ポーリングする相手機器数
Cmd[1] = 3 # 相手機器アドレス
Cmd[2] = 4 # 相手機器アドレス
Ret.value = GpibPy.GpPollEx(Cmd, Pstb, Psrq)
for Cnt in rang(1, Cmd[0]+1):
if Cnt > Psrq[0]:
break
if Psrq[Cnt] == 1: # SRQが送出されていた場合
talker.value = Cmd[Cnt] # SRQを送出した機器のアドレス
stbyte.value= Pstb[Cnt] # ステータスバイト