GpListenEx

image\BLTLRGSQ.gif使用可能ボード image\SETUP.gif image\SANBTN.gif

 

 

■機能       データを受信します。VBでBinary受信を行う場合はGpListenExBinaryを使用してください。

 

■書式       

(VB.NET用)

Dim Srlen, Ret As Integer

Dim Cmd(xxxx) As Integer    ' (xxxxはコマンド配列数のMax値を指定)

Dim Srbuf As New String("", xxxx)    ' (xxxxはデータ数のMax値を指定)

Ret = GpListenEx(Cmd, Srlen, Srbuf)

 

(C言語用)

DWORD Srlen, Ret;

DWORD *Cmd;

BYTE *Srbuf;

Ret = GpListenEx(Cmd, &Srlen, Srbuf);

 

(C#用)

uint Srlen, Ret;

uint[] Cmd = new uint[xxxx];   /* (xxxxはコマンド配列数のMax値を指定) */

StringBuilder Srbuf = new StringBuilder(xxxx);   /* (xxxxはデータ数のMax値を指定) */

Ret = gpib.ListenEx(Cmd, out Srlen, Srbuf);

 

(Python用)

Srlen, Ret = ctypes.c_ulong(), ctypes.c_ulong()

Cmd = (ctypes.c_ulong * xxxx)()   # (xxxxはコマンド配列数のMax値を指定)

Srbuf = (ctypes.c_ubyte * xxxx)()   # (xxxxはデータ数のMax値を指定)

Ret.value = GpibPy.GpListenEx(Cmd, ctypes.byref(Srlen), Srbuf)

 

■モード     マスタモード/スレーブモード

 

■引数

Cmd    :    コマンド配列

[0] トーカ+リスナ数(=リスナ数+1)

(スレーブモード=0)

[1] トーカアドレス

[2] リスナアドレス

[3] リスナアドレス

 

Srlen     :   (入力)最大受信可能バイト長(1Mbyte Max)

(出力)実際に受信したバイト長

 

Srbuf     :   受信バッファ

 

SrbufB   :   受信バッファ(Binaryデータ用)

 

Ret        :   終了情報(戻り値)

0       :   正常終了(デリミタ受信)

1       :   正常終了(デリミタおよびEOI受信)

2       :   正常終了(EOI受信)

8       :   初期化未実行

128   :   受信データ域オーバー

140   :  他の非同期関数の実行中

240   :   ESCキーが押された

242   :   アドレス指定ミス

243   :   バッファ指定エラー

252   :   GPIBエラー

253   :   受信データがありません(デリミタのみ受信)

254   :   タイムアウト

255   :   パラメータエラー

(詳細は「戻り値一覧」参照)

 

■補足

①GpListen()と比較して次のような違いがあります。

・GpBoardstsEx()の設定(32H)により、受信したデリミタをバイト数に含めることができます(デフォルトではカウントしません)

・デリミタおよびEOIによる戻り値をより正確に返します。

 

②受信バッファおよび受信バイト長についてSrlenの入力値は、Srbufで指定した配列数を入力します。

また、Srlenの出力値はSrlenの入力側の値を越えることはありません。

このため、それ以上のデータが送られてきた場合、Srlen(入力値)=Srlen(出力値)となり、SrbufにはSrlen(出力値)バイトまでのデータが入力されることになります。

よって、Srbufの配列数を超えたSrlenを入力すると、プログラムの正常動作は期待できません。

また、受信バッファはデリミタコードも含めて確保してください。

 

③コマンド配列についてCmd[0]には送出するコマンド数を与えますので、スレーブモード時はCmd[0]=0としてください。

 

④マスタモードでの戻り値が128(データ受信域オーバー)の場合、次のようにすることで残りのデータを受信することができます。

1.Cmd(0) = 0 にして再度GpListenExを実行

2.戻り値が2以下(下位バイト)になるまで1.から繰り返す