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