■機能 設定した全機器アドレスに対し、SRQの有無に関わらずシリアルポールを行います。この関数においてSRQ待ちを行うことはありません。
■書式
(VB.NET用)
Dim Ret As Integer
Dim Cmd(xxxx) As Integer ' (xxxxはシリアルポールする機器数+1を指定)
Dim Pstb(xxxx) As Integer ' (xxxxはシリアルポールする機器数+1を指定)
Dim Psrq(xxxx) As Integer ' (xxxxはシリアルポールする機器数+1を指定)
Ret = GpPollEx(Cmd, Pstb, Psrq)
(C言語用)
DWORD Ret;
DWORD *Cmd;
DWORD *Pstb;
DWORD *Psrq;
Ret = GpPollEx(Cmd, Pstb, Psrq);
(C#用)
uint Ret;
uint[] Cmd = new uint[xxxx]; /* (xxxxはシリアルポールする機器数+1を指定) */
uint[] Pstb = new uint[xxxx]; /* (xxxxはシリアルポールする機器数+1を指定) */
uint[] Psrq = new uint[xxxx]; /* (xxxxはシリアルポールする機器数+1を指定) */
Ret = gpib.PollEx(Cmd, Pstb, Psrq);
(Python用)
Ret = ctypes.c_ulong()
Cmd = (ctypes.c_ulong * xxxx)() #(xxxxはシリアルポールする機器数+1を指定)
Pstb = (ctypes.c_ulong * xxxx)() #(xxxxはシリアルポールする機器数+1を指定)
Psrq = (ctypes.c_ulong * xxxx)() #(xxxxはシリアルポールする機器数+1を指定)
Ret.value = GpibPy.GpPollEx(Cmd, Pstb, Psrq)
■モード マスタモードのみ
■引数
Cmd : コマンド配列
[0] シリアルポールする機器数
[1] 相手機器アドレス
[2] 相手機器アドレス
・
・
Pstb : (出力)返送されたステータスバイト配列
[0] 意味を持ちません
[1] Cmd(1)に設定した機器のステータスバイト(タイムアウト時-1)
[2] Cmd(2)に設定した機器のステータスバイト(タイムアウト時-1)
・
・
Pstbのステータスバイト
Psrq : (出力)SRQが見つかったかどうかのステータス
SRQが見つかった場合1、そうでない場合0が入ります。
[0] SRQが見つかった機器数
[1] Cmd(1)に設定した機器のSRQステータス
[2] Cmd(2)に設定した機器のSRQステータス
・
・
Psrqのステータス
Ret : 終了情報(戻り値)
0 : 正常終了(SRQを送出した機器あり)
80 : 初期化未実行
128 : 正常終了(SRQを送出した機器なし)
140 : 非同期関数の実行中
240 : ESCキーが押された
252 : GPIBエラー
254 : タイムアウト
255 : 不正呼び出し
(詳細は「戻り値一覧」参照)
■補足
①GpPollと違い、複数の機器を指定した場合、SRQの有無に関わらずすべての機器に対しシリアルポールを行ないます。
このため、次のような実行結果を返します。
例)機器アドレス2、5、17に対しGpPollExを実行し2、17の機器からSRQが送出されていた場合(ステータスバイトはそれぞれ40H、20H、60Hと仮定)
Cmd(0) = 3
Cmd(1) = 2
Cmd(2) = 5
Cmd(3) = 17
Ret = GpPollEx(Cmd(0), Pstb(0), Psrq(0))
実行結果
Ret : 0
Pstb(1) : 40H
Pstb(2) : 20H
Pstb(3) : 60H
Psrq(0) : 2
Psrq(1) : 1
Psrq(2) : 0
Psrq(3) : 1
②SRQが送出(RQSビットがON)されていなくてもステータスバイトはPstb配列に格納されます。
③Pstb配列の内容は関数内で0初期化されます。