ＲＥＸ−５０５２
ＧＰＩＢ ＰＣ Ｃａｒｄ
Linux 用ライブラリ仕様書

２００６年１月２０日

Rev1.01

Revision

変更日

変更点

Rev1.0２００６年 1 月２０日

初版

2

■ ライブラリ仕様
API 関数は、デバイスオープン・クローズに関する関数、9914 レジスタ制御関数、GPIB 機器制御関数に分類されます。以下に、関数の動作概要を示します。

・ デバイスオープン・クローズに関する関数として下記の関数を用意しています。
関数名

動作概要

gp̲attach

REX5052 をオープン

gp̲detach

REX5052 をクローズ

gp̲cardinfo

接続されている REX5052 のリソース情報を取得

・ REX5052 のレジスタを直接制御する関数として下記の関数を用意しています。
関数名

動作概要

OutPort

REX5052 のレジスタに書き込み

InPort

REX5052 のレジスタから読み込み

・ GPIB 機器の制御に関する関数として下記の関数を用意しています。
関数名

動作概要

gp̲init

REX5052 の初期化gp̲cli

IFC ラインを TRUE にしますgp̲ren

REN ラインを TRUE にしますgp̲clr

CLR 又は SDC コマンド送信

gp̲wrtGPIB 機器にデータ送信

gp̲redGPIB 機器からデータ受信

gp̲trg

GET コマンド送信

gp̲wsrq

指定時間 SRQ を待つ(ステータスレジスタ 1)

gp̲wsrqb

指定時間 SRQ を待つ(バスステータスレジスタ)

gp̲rdsシリアルポールを実行

gp̲rds1

シリアルポールを実行

gp̲srq

SRQ 割り込み

gp̲lclGPIB 機器をローカル状態に設定

gp̲llo

LLO コマンド送信

gp̲tmout

バスタイムアウト時間設定

3gp̲setdelay

外部変数のディレイ時間設定

gp̲count

受信データ数の取得

gp̲delm

デリミタの設定

gp̲tfrout

GPIB 機器にバイナリデータ送信

gp̲tfrin

GPIB 機器からバイナリデータ受信

gp̲tfrinit

GPIB 機器からバイナリデータ受信するためのトーカ指定

gp̲tfrins

GPIB 機器からバイナリデータ受信

gp̲tfrend

GPIB 機器からバイナリデータ受信するためのトーカ解除

gp̲wtb

コマンド文字列を送信

gp̲myadr

REX5052 の機器アドレスを取得

・ その他の関数として下記の関数を用意しています。
関数名

動作概要

gp̲wait

指定時間待つ・補助関数として下記の関数を用意しています。
関数名

動作概要

gp̲srqCheck

SRQ ラインの現在の状態を取得

gp̲wrtd

GPIB バス上にデータ送信

gp̲tfroutd

GPIB バス上にバイナリデータ送信

gp̲redd

GPIB 上からのデータ受信

gp̲redah

GPIB 機器からデータ受信

gp̲redrst

リスナ解除、RFD ホールドオフの解除

gp̲findlstn

リスナ機器の検出

4

○API 関数使用上の注意(1) 1 台の REX5052 で複数台の GPIB 機器(計測器)の制御を行うには、機器アドレス間にカンマ","を指定します。
機器アドレス指定を行う関数 gp̲clr(), gp̲wrt(), gp̲red(), gp̲trg(), gp̲rds(), gp̲rds1(),gp̲lcl(), gp̲tfrout(), gp̲tfrin(), gp̲tfrinit()で使用します。
たとえば、以下のように使用してください。
gp̲clr("3,5"); // リスナ 3 と 5 にコマンド SDC を送信します。
gp̲wrt("6,20,30", "*CLS"); // リスナ 6 と 20 と 30 にデータ "*CLS"を送信します。
gp̲red("3,20", buf, bufLen); /* アドレス 3 をトーカに、アドレス 20 をリスナに指定してトーカ 3 からのデータを受信します。*/
gp̲rds("3,20", status̲byte); /* シリアルポールを実行し、アドレス 3 と 20 にステータスバイトを問い合わせます。*/(2) ニ次アドレスをもつ GPIB 機器の制御を行うには、一次アドレスに続いて、ニ次コマンド（96(0x60h)+ニ次アドレス）を指定します。たとえば、以下のように使用してください。
gp̲clr("3,111"); /* 一次アドレス 3,二次アドレス 15 のリスナにコマンド SDC を送信します。*/5

オープンクローズ関数
int gp̲attach ()

書 式

機 能

REX5052 をオープンします。
正常にオープンされた時に返される REX5052 のハンドル（ファイルディスクリプタ）は他の関数呼び出し時の第一引数として必要となります。

引 数なし

戻 値

REX5052 を正常にオープンした場合は REX5052 のハンドルを返します。

(IN)

オープン時エラーが発生した場合は NULL が返されます。
補 足プログラム終了時、gp̲detach ()により REX5052 をクローズするようにしてください。

VOID gp̲detach (int num)

書 式

機 能

REX5052 をクローズします。

引 数num

戻 値なし

(IN)

クローズする REX5052 のハンドル

6

int gp̲cardinfo(unsigned int *pIOBase, unsigned int *pIrqNo);

書 式

機 能

接続されている REX-5052 PCCard の IOBase、Irq 情報をユーザに返します。

引 数*pIOBase(OUT)

IOBase 情報格納用ポインタ*pIrqNo(IN)Irq 情報格納用ポインタ

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

補 足7

9914 レジスタ制御関数
USHORT OutPort(USHORT Reg, USHORT OutVal)

書 式

機 能

GPIB コントローラのレジスタに直接、値を書き込みます。(4-2 項 レジスタセット参照)

引 数Reg(IN)レジスタオフセット値(0,2,4,6,8,10,12,14 のいずれかを指定)

OutVal戻 値

N(IN)レジスタに書き込む値

正常終了時、書き込んだ値が返されます。
エラー時には、0xFFFFh が返されます。

USHORT InPort(USHORT Reg)

書 式機 能GPIB コントローラのレジスタから直接、値を読み込みます。(4-2 項 レジスタセット参照)

引 数

Reg(IN)

レジスタオフセット値(0,2,4,6,8,10,12,14 のいずれかを指定)

戻 値

N

正常終了時、読み込んだ値が返されます。
エラー時には、0xFFFFh が返されます。

8GPIB 機器制御関数
INT gp̲init(USHORT GpAdrs, USHORT IOBase, USHORT IrqNo)

書 式機 能REX5052 の GPIB 機器アドレスをセットし、GPIB コントローラの初期化を行います。また、各パラメータ(バスタイムアウト時間,デリミタ)の初期値を設定します。
GPIB 制御を行う前に必ず呼び出してください。

引 数

戻 値

GpAdrs(IN)

REX5052 の GPIB 機器アドレス

IOBase(IN)未使用

IrqNo(IN)

未使用

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

60

REX5052 の GPIB 機器アドレス設定エラー

INT gp̲cli(void)

書 式

機 能

IFC ラインを TRUE にします。

引 数なし

戻 値0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

GPIB
バス

IFC
約 10 ms

9

INT gp̲ren(void)

書 式

機 能

REN ラインを TRUE にします。

引 数なし

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

RENgp̲ren()の実行

GPIB
バス

10

INT gp̲clr(PCHAR adrs)

書 式

機 能

クリアコマンド（DCL 又は SDC ）を送信します。引数 adrs に機器アドレスを指定しない
場合は DCL コマンドを、指定する場合は SDC コマンドを送信します。

引 数adrs

戻 値0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー-5,-6,-7

USB 転送時エラー

補 足(IN)GPIB 機器アドレス

機器アドレスの指定が無い場合は、GPIB 上の全機器に対して DCL(Device Clear)コマンドを送信します。
(使用例) gp̲clr("");
ATN
DATA

DCL

0x14
機器アドレスの指定がある場合は、指定の機器に対して SDC(Selected Device Clear)コマンドを送信します。
(使用例) gp̲clr("3,5");

ATN
DATA

UNL
0x3F

LA30x23

11LA50x25

SDC0x04

INT gp̲wrt(PCHAR adrs, PCHAR buf)

書 式機 能引数 adrs で指定した GPIB 機器に対してデータ送信します。デリミタ指定関数 gp̲delmで指定されたデリミタを送信データに自動的に付加して送信を行います。

引 数

戻 値

補 足adrs(IN)

GPIB 機器アドレスbuf(IN)

送信文字列を格納するバッファアドレス

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー

64

送信データ設定エラー-5,-6,-7

転送時エラー

機器アドレス 3 にアスキーデータ"D2ABC"を送信する場合の例(使用例) gp̲wrt("3","D2ABC");
ATN
DATA

UNL

MTA LA D 2 A B C CR LF
0x23

12

INT gp̲red(PCHAR adrs, PCHAR buf, INT bufLen)

書 式機 能引数 adrs で指定した GPIB 機器をトーカに指定し、データの受信を行います。デリミタ指定関数 gp̲delm で指定されたデリミタ(もしくは EOI)を受信するかバスタイムアウトになるまで制御を返しません。
注)アプリケーションにはデリミタコードを返しません。

引 数

戻 値

GPIBバスadrs(IN)

GPIB 機器アドレス

buf(OUT)

受信文字列を格納するバッファアドレス

bufLen(IN)

受信バッファのサイズ

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

61

バッファオーバーフロー(デリミタ受信しないまま、サイズ分を受信)

63

GPIB 機器アドレス設定エラー

64

受信バッファサイズ設定エラー-5,-6,-7

転送時エラー

ATN
DATA

UNL

TA

MLA

EOI

13

1 2

A B CR LF

UNT

書 式

INT gp̲trg(PCHAR adrs)

機 能トリガコマンド（GET）を送信します。

引 数adrs

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー-5,-6,-7

転送時エラー

補 足(IN)GPIB 機器アドレス

機器アドレス 3 と 5 に GET(Group Execute Trigger)コマンドを送信する場合の例(使用例) gp̲trg("3,5");
ATN
DATA

UNL

14

LA3 LA50x23 0x25

GET0x08

INT gp̲wsrq(INT WaitSecTime)

書 式

機 能

指定された時間、SRQ が発行されるのを待ちます。(インタラプトステータスレジスタ 1をリード) SRQ を受信した場合、直ちに制御を返します。

引 数

WaitSecTime

戻 値0SRQ 受信-1

タイムアウト(SRQ 未受信)

SRQ を待つ時間(秒単位で指定)

INT gp̲wsrqb(INT WaitSecTime)書 式

機 能(IN)指定された時間、SRQ が発行されるのを待ちます。(バスステータスレジスタをリード)
SRQ を受信した場合、直ちに制御を返します。

引 数WaitSecTime(IN)SRQ を待つ時間(秒単位で指定)

戻 値

0

SRQ 受信-1

タイムアウト(SRQ 未受信)

15

書 式

INT gp̲rds(PCHAR adrs, PUCHAR status̲byte)機 能シリアルポールを実行し、ステータスバイトを取得します。

引 数adrs(IN)

GPIB 機器アドレス

status̲byte(OUT)

ステータスバイトを受け取るための配列。接続機器台数分以上の配列を確保してその先頭アドレスを指定します。

戻 値

GPIB
バス0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー-5,-6,-7

転送時エラー

ATN
DATA

UNL

LASPE
0x18

TA

SB : ステータスバイト
SPE : シリアルポールイネーブル
SPD : シリアルポールディセーブル

16

SBSPD
0x19

UNT

INT gp̲rds1(PCHAR adrs, PUCHAR status̲byte)

書 式機 能シリアルポールを実行し、ステータスバイトを取得します。
gp̲rds との違いは最後に UNT(Untalk)コマンドを送信しない点です。

引 数

adrs

(IN)

GPIB 機器アドレス

status̲byte(OUT)

ステータスバイトを受け取るための配列。接続機器台数分以上の配列を確保してその先頭アドレスを指定します。

戻 値

GPIB
バス0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー-5,-6,-7

転送時エラー

ATN
DATA

UNL

SPE
0x18

TA

SB

SB : ステータスバイト
SPE : シリアルポールイネーブル
SPD : シリアルポールディセーブル

17SPD
0x19

INT gp̲srq(INT SrqMode, PAPIFUNC pFunc)

書 式

機 能

SRQ 割り込みの実行および解除を行います。

引 数

SrqMode(IN)

モードフラグ(0:解除フラグ, 1:実行フラグ)

pFunc(IN)コールバック関数のポインタ

戻 値0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

71

SRQ 割り込みは実行されている(実行時のエラー)

18

書 式

INT gp̲lcl(PCHAR adrs)

機 能GPIB 機器をローカル状態に設定します。

引 数adrs

戻 値0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー-5,-6,-7

転送時エラー

補 足(IN)GPIB 機器アドレス

機器アドレスの指定が無い場合は、REN ラインを High(FALSE)にします。
(使用例) gp_lcl("");

FALSE（ローカル状態）

REN
TRUE(リモート状態)

gp̲lcl の実行

機器アドレスの指定がある場合は、指定の機器に対して GTL(Go To Local)コマンドを送信します。
(使用例) gp̲lcl("3,5");

ATNDATAUNL

LA30x23

REN19LA50x25

GTL0x01

書 式

INT gp̲llo(void)機 能GPIB 上の全機器に対して LLO(Local Lock Out)コマンド送信します。

引 数なし

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト-5,-6,-7

転送時エラー

GPIB
バスATN
LLO
0x11

DATA

INT gp̲tmout(INT SecTime)

書 式

機 能

バスタイムアウト時間の設定を変更します。初期値は 10 秒です。

引 数

SecTime

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

72

パラメータ設定エラー

補 足(IN)

タイムアウト時間(秒単位で指定)

初期設定(10 秒)は gp̲init()で行いますので、本関数呼び出しは、gp̲init()の後に行ってください。設定可能な最長タイムアウト時間は 655 秒です。

20

INT gp̲setdelay(INT DelayTime)

書 式

機 能

ATN ラインを TRUE 又は FALSE にする際のディレイ時間を設定します。コマンド送信時にGPIB タイムアウトとなる場合に調整します。初期値は１ミリ秒です。

引 数

DelayTime(IN)

ディレイ時間(ミリ秒単位で指定)

戻 値0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

補 足

INT gp̲count(void)

書 式

機 能

GPIB 機器からの受信データ数または GPIB 機器へ送信完了したデータ数を取得します。
関数 gp̲red, gp̲tfrin, gp̲tfrins, gp̲wrt, gp̲tfrout の後に呼び出すことで、実際にハンドシェイクが完了したデータ数を知ることができます。

引 数なし

戻 値

N

補 足

デリミタコードのカウントは行いません。

受信データ数または送信データ数が返されます。

21

INT gp̲delm(PCHAR mode, UINT dlm)

書 式機 能送信時(gp̲wrt)、受信時(gp̲red)のデリミタの設定を行ないます。初期設定では送信時デリミタは CR+LF、受信時デリミタは LF(0x0A)となっています。

引 数

戻 値

補 足

mode(IN)“l”で受信時、“t”で送信時の設定を行います。
“b”で受信時・送信時の設定を行います。

dlm

(IN)

デリミタコードを指定します。

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

・初期設定は gp̲init()で行いますので、本関数呼び出しは、gp̲init()の後に行ってください。
・デリミタコード dlm については以下のような設定を行います。
(送信時) ：mode = “t”での設定
Bit6〜Bit0 の 7bit でデリミタコードを設定します。Bit7 を 1 に設定すると EOI を出力し、全ての bit を 0(dlm=0)にすると、CR+LF(0x0D＋0x0A)が設定されます。
(受信時) ：mode = “l”での設定
Bit7〜Bit0 の 8bit でデリミタコードを設定します。EOI 検出時は常にデリミタとして扱い、データ受信を終了します。
(送信・受信時) ：mode = “b”での設定
dlm の値を以下のように設定することで、送信・受信時の設定を同時に行います。“t”“l”で設定されたデリミタは無効となります。
dlm = 0x0400
デリミタなしdlm = 0x000DCR
dlm = 0x000A
LF
dlm = 0x0200
CR+LF
dlm = 0x0C00
EOI のみdlm = 0x080D
CR+EOI(受信時は CR もしくは EOI で受信終了)
dlm = 0x080A
LF+EOI(受信時は CR もしくは EOI で受信終了)
dlm = 0x0A00
CR+LF+EOI(受信時は CR+LF もしくは EOI で受信終了)※mode=“b”で送信時・受信時に異なる設定を行いたい場合は gp̲wrt(),gp̲red()関数
呼び出し直前に、本関数で再設定を行ってください。

22

INT gp̲tfrout(PCHAR adrs, INT bufLen, PCHAR buf)

書 式機 能引数 adrs で指定した GPIB 機器に対してバイナリデータを送信します。デリミタは EOIのみです。

引 数

戻 値

GPIB
バスadrs(IN)

GPIB 機器アドレス

bufLen(IN)

送信するデータの長さ

buf(IN)

送信データを格納する配列の先頭アドレス。

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー

64

送信データ長設定エラー-5,-6,-7

転送時エラーATNDATAEOIUNL

MTA LA D1
0x40 0x23

23

D2

D1023

D1024

INT gp̲tfrin(PCHAR adrs, INT bufLen, PCHAR buf)

書 式機 能引数 adrs で指定した GPIB 機器をトーカに指定し、バイナリデータを受信します。デリミタは EOI のみです。EOI を受信するかバスタイムアウトになるまで制御を返しません。

引 数

戻 値

GPIB
バスadrs(IN)

GPIB 機器アドレス

bufLen(IN)

用意する配列数

buf

(OUT)

受信データを格納する配列の先頭アドレス

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

61

受信バッファオーバーフロー(EOI 受信しないまま、サイズ分を受信)

63

GPIB 機器アドレス設定エラー

64

受信用配列設定エラー-5,-6,-7

転送時エラーATNDATA

UNL TA MLA
0x43 0x20

EOI

24

D1

D2

D1023

D1024 UNT

INT gp̲tfrinit(PCHAR adrs)

書 式機 能GPIB 機器からバイナリデータを受信するためにトーカアドレスを指定します。
(gp̲tfrins, gp̲tfrend と共に使用します)

引 数adrs

戻 値0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

63

GPIB 機器アドレス設定エラー-5,-6,-7

転送時エラー

補 足(IN)GPIB 機器アドレス

受信すべきデータ数が不明な場合、関数 gp̲tfrin の代わりに 3 つの関数 gp̲tfrinit,gp̲tfrins, gp̲tfrend を組み合わせて使用し、データを受信することが可能です。
gp̲tfrins を繰りかえし呼び出すことで、連続してデータを受信することができます。
(使用例) 機器アドレス 3 からデータを受信する場合。通常は gp̲tfrins の戻り値より EOI
受信の有無を調べ、EOI 未受信であれば、再度を呼び出します。
BYTE RxBuf[256];gp̲tfrinit("3"); // トーカ指定
gp̲tfrins(256, RxBuf); // 256Byte データ受信
gp̲tfrins(256, RxBuf);
gp̲tfrins(256, RxBuf);
・・・(EOI 受信するまで繰返し呼び出す)
gp̲tfrend(); // トーカ指定解除

25

書 式

機 能

INT gp̲tfrins(INT bufLen, PCHAR buf)

GPIB 機器からバイナリデータを受信します。デリミタは EOI のみです。
(gp̲tfrinit, gp̲tfrend と共に使用します)

引 数

戻 値

bufLen(IN)

受信するデータの長さbuf(OUT)

受信データを格納する配列の先頭アドレス0

指定サイズ分のデータを受信して正常終了

24

EOI を受信して正常終了-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

64

受信用配列設定エラー-5,-6,-7

転送時エラー

書 式

機 能VOID gp̲tfrend(void)

GPIB 機器からバイナリデータを受信するために指定したトーカアドレスを解除します。
(gp̲tfrinit, gp̲tfrins と共に使用します)

引 数なし

戻 値なし

26

INT gp̲wtb(PCHAR buf)

書 式

機 能

ATN ラインを TRUE にしてコマンド文字列を送信します。コマンド文字列の最後に、データ終了を示す NULL コード(0x00)を指定してください。

引 数buf(IN)

送信文字列を格納するバッファアドレス

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

64

送信データ設定エラー-5,-6,-7

転送時エラー

GPIB
バスATN
DATA

LA
0x23

GTL0x01

INT gp̲myadr(void)

書 式機 能UNL0x3F

関数 gp̲init で設定された REX5052 の GPIB 機器アドレスを取得します。
プログラムで新たに REX5052 の GPIB アドレスを知る必要が無い場合は、本関数を呼び出す必要はありません。

引 数

なし

戻 値

N

正常終了時、REX5052 の GPIB 機器アドレスが返されます。

-1

ライブラリ DeviceIoControl()リクエストエラー

27

その他の関数
書 式

VC ¾

機 能

指定時間プログラムを停止させます。

引 数

WaitSecTime

戻 値

なし

VOID gp̲wait(int WaitSecTime )(IN)

プログラムを停止する時間(秒単位で指定)

28

補助関数
書 式

INT gp̲srqCheck(void)機 能

SRQ ラインの現在の状態を返します。

引 数

なし

戻 値

1

SRQ ラインが TRUE

0

SRQ ラインが FALSE-1

ライブラリ DeviceIoControl()リクエストエラー

29

INT gp̲wrtd(PCHAR buf, INT bufLen)

書 式

機 能

GPIB バス上にデータ送信します。デリミタ指定関数 gp̲delm で指定されたデリミタを送信データに自動的に付加して送信を行います。

引 数

戻 値

補 足buf(IN)

送信文字列を格納するバッファアドレス

bufLen(IN)

送信するデータサイズ

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

64

送信データ設定エラー-5,-6,-7

転送時エラーgp̲wrt と異なる点は、データ送信前にコマンド送信をしない点です。
通常、gp̲wtb と組み合わせて使用します。

ATN

H

D 2 A B C CR LF

DATA

30

INT gp̲tfroutd(INT bufLen, PCHAR buf)

書 式

機 能

GPIB バス上にバイナリデータ送信します。

引 数

bufLen(IN)

送信するデータサイズ

buf(IN)

送信データを格納する配列の先頭アドレス。

戻 値

補 足0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

64

送信データ長設定エラー-5,-6,-7

転送時エラーgp̲tfrout と異なる点は、データ送信前にコマンド送信をしない点です。
また、送信デリミタ EOI の有無は gp̲delm の設定に従います。デリミタコードは付加しま
せん。通常、gp̲wtb と組み合わせて使用します。

ATNDATA

H

D1

31

D2

D1023

D1024

INT gp̲redd(PCHAR buf, INT bufLen)

書 式

機 能

GPIB 上からのデータ受信を行います。デリミタ指定関数 gp̲delm で指定されたデリミタを受信するかバスタイムアウトになるまで制御を返しません。
注)アプリケーションにはデリミタコードを返しません。

引 数

戻 値

補 足buf(OUT)

受信文字列を格納するバッファアドレスbufLen(IN)受信バッファのサイズ

0

指定サイズ分データ受信して正常終了

24

指定のデリミタを受信して正常終了-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

64

受信バッファサイズ設定エラー-5,-6,-7

転送時エラーgp̲red と異なる点は、データ受信前にコマンド送信をしない点と最後に UNT コマンドを送信しない点です。また、本関数から制御を戻したとき、RFD ホールドオフとなります。
通常、gp̲wtb と組み合わせて使用します。

ATN

HDATA

D 2 A B C CR LF

32

INT gp̲redah(PCHAR adrs, PCHAR buf, INT bufLen)

書 式機 能引数 adrs で指定した GPIB 機器をトーカに指定し、データの受信を行います。デリミタ
指定関数 gp̲delm で指定されたデリミタを受信するかバスタイムアウトになるまで制御を返しません。
注)アプリケーションにはデリミタコードを返しません。

引 数

戻 値

補 足adrs(IN)

GPIB 機器アドレス

buf(OUT)

受信文字列を格納するバッファアドレス

bufLen(IN)受信バッファのサイズ

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

61

バッファオーバーフロー(デリミタ受信しないまま、サイズ分を受信)

63

GPIB 機器アドレス設定エラー

64

受信用配列数設定エラー-5,-6,-7

転送時エラーgp̲red と異なる点は、最後に UNT コマンドを送信しない点です。また、本関数から制御を戻したとき、RFD ホールドオフとなります。
ATN
DATA

UNL

TA

MLA

33

1 2

A B CR LF

INT gp̲redrst(void)

書 式

機 能

本関数は、リスナ解除、RFD ホールドオフの解除を行います。

引 数なし

戻 値

0

正常終了

-1

ライブラリ DeviceIoControl()リクエストエラー

INT gp̲findlstn(PCHAR adrs, INT adrsLen)

書 式

機 能

GPIB バスに接続されているリスナ機器を検出し、GPIB アドレスを取得します。

引 数

adrs(OUT)

GPIB アドレスを格納するバッファアドレス

adrsLen(IN)バッファのサイズ

戻 値

補 足0

リスナ未検出-1

ライブラリ DeviceIoControl()リクエストエラー

53

GPIB バスタイムアウト

64

アドレス格納用バッファサイズが正しくない

N

リスナ検出台数本関数では、取得した GPIB アドレスを ASCII データの形で adrs に格納します。取得した
adrs を gp̲wrt(), gp̲red()等の第一引数でそのまま使用できます。
戻り値に 64 が返る場合は、確保するバッファ adrs を大きめに確保してください。

34