REX−USB220
ＵＳＢ２.０ ＧＰＩＢ ＣｏｎｖｅｒｔｅｒLinux 用ライブラリ仕様書

２００５年１１月０７日
Rev1.01

Revision

変更日

変更点

Rev1.02005 年 11 月 07 日 初版

2

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

・デバイスオープン・クローズに関する関数として下記の関数を用意しています。
※USB220 を複数台接続する際に”U2”が付く関数を使用してください
関数名

動作概要

gp̲attach, U2GpOpenUnit

デバイスをオープン

gp̲detach, U2GpCloseUnit

デバイスをクローズ

U2GpEnumUnit

接続されている全デバイスのコンバータ ID 情報を取得

・USB220 のレジスタを直接制御する関数として下記の関数を用意しています。
※USB220 を複数台接続する際に頭に”U2”が付く関数を使用してください
関数名

動作概要

OutPort, U2OutPort

USB220 のレジスタに書き込み

InPort, U2InPort

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

・GPIB 機器の制御に関する関数として下記の関数を用意しています。
※USB220 を複数台接続する際に頭に”U2”が付く関数を使用してください
関数名

動作概要

gp̲init, U2Gpinit

USB220 の初期化

gp̲cli, U2Gpcli

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

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

CLR 又は SDC コマンド送信

gp̲wrt, U2Gpwrt

GPIB 機器にデータ送信

gp̲red, U2Gpred

GPIB 機器からデータ受信

gp̲trg, U2Gptrg

GET コマンド送信

gp̲wsrq, U2Gpwsrq

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

gp̲wsrqb, U2Gpwsrqb

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

gp̲rds, U2Gprds

シリアルポールを実行

gp̲rds1, U2Gprds1

シリアルポールを実行

gp̲srq, U2Gpsrq

SRQ 割り込み

gp̲lcl, U2Gplcl

GPIB 機器をローカル状態に設定

3gp̲llo, U2Gpllo

LLO コマンド送信

gp̲tmout, U2Gptmout

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

gp̲setdelay,

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

U2Gpsetdelay
gp̲count, U2Gpcount

受信データ数の取得

gp̲delm, U2Gpdelm

デリミタの設定

gp̲tfrout, U2Gptfrout

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

gp̲tfrin, U2Gptfrin

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

gp̲tfrinit, U2Gptfrinit

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

gp̲tfrins, U2Gptfrins

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

gp̲tfrend, U2Gptfrend

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

gp̲wtb, U2Gpwtb

コマンド文字列を送信

gp̲myadr, U2Gpmyadr

USB220 の機器アドレスを取得

・その他の関数として下記の関数を用意しています。
※USB220 を複数台接続する際もそのまま使用できます
関数名

動作概要

gp̲wait

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

動作概要

gp̲srqCheck,

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

U2GpsrqCheck
gp̲wrtd, U2Gpwrtd

GPIB バス上にデータ送信

gp̲tfroutd, U2Gptfroutd

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

gp̲redd, U2Gpredd

GPIB 上からのデータ受信

gp̲redah, U2Gpredah

GPIB 機器からデータ受信

gp̲redrst, U2Gpredrst

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

gp̲findlstn,

リスナ機器の検出

U2Gpfindlstn

4

○API 関数使用上の注意(1) 1 台のパソコンで USB220 コンバータを複数台使用する場合には、先頭が U2xxxx となる関数(U2Gpinit など)を使用します。プログラムの始めに、指定コンバータ ID の USB220 のハンド
ルを関数 U2GpOpenUnit()で取得し、U2xxxx の第一引数に指定します。
(2) 1 台の USB220 コンバータで複数台の GPIB 機器(計測器)の制御を行うには、機器アドレス
間にカンマ","を指定します。U2xxxx 関数を使用する必要はありません。
機器アドレス指定を行う関数 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 にステータスバイトを問い合わせます。*/(3) ニ次アドレスをもつ GPIB 機器の制御を行うには、一次アドレスに続いて、ニ次コマンド（96(0x60h)+ニ次アドレス）を指定します。たとえば、以下のように使用してください。
gp̲clr("3,111"); /* 一次アドレス 3,二次アドレス 15 のリスナにコマンド SDC を送信します。*/

5

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

書 式

機 能

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

引 数

なし

戻 値

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

(IN)

ID のコンバータを見つけられなかった場合、またはオープン時エラーが発生した場合は
NULL が返されます。
補 足プログラム終了時、gp̲detach ()によりコンバータをクローズするようにしてください。

int U2GpOpenUnit(int UnitId)

書 式

機 能

指定の ID のコンバータをオープンします。正常にオープンされた時に返されるコンバー
タのハンドルは他の関数呼び出し時の第一引数として必要となります。
1 台のコンバータのみ接続の場合は、本関数を呼び出す必要はありません。

引 数

UnitId戻 値

指定のコンバータを正常にオープンした場合はコンバータのハンドルを返します。

(IN)

オープンするコンバータ ID（工場出荷時の設定値はゼロ）指定された ID のコンバータを見つけられなかった場合、またはオープン時エラーが発生した場合は NULL が返されます。
補 足プログラム終了時、U2GpCloseUnit()によりコンバータをクローズするようにしてください。

6

VOID gp̲detach (int num)

書 式

機 能

コンバータをクローズします。

引 数

num

戻 値

ありません。

(IN)

クローズするコンバータのハンドル

VOID U2GpCloseUnit(int hDriver)

書 式

機 能

コンバータをクローズします。

引 数

hDriver

戻 値ありません。

(IN)

クローズするコンバータのハンドル

7

int U2GpEnumUnit(unsigned short *pUnitId, unsigned short MaxUnit)

書 式

機 能

接続されているコンバータを列挙し、コンバータ ID 情報をユーザに返します。
本関数は、複数台の USB2.0 GPIB コンバータを同一 USB バスに接続して利用する場合に必要になります。
複数台同時使用する場合は、各コンバータにユニークなコンバータ ID を設定します。1
台のパソコンに接続可能な最大コンバータ台数は 256 台で、コンバータ ID は 0-255 までの範囲で設定できます。
本関数により個々のコンバータに設定されたコンバータ ID 情報を得ることができます。
その情報をもとに U2GpOpenUnit()を呼び出すことにより、コンバータ ID で指定されたコンバータのハンドルを取得することができます。
1 台のコンバータしか接続されない場合は、本関数を呼び出す必要はありません。

引 数

pUnitId(OUT)

列挙したコンバータ ID の格納先アドレス。MaxUnit で指定した個数分の配列を確保してその先頭アドレスを指定します。

MaxUnit
戻 値(IN)

列挙する最大コンバータ台数。

N

正常終了時、接続されているコンバータの台数が返されます。

-1

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

コンバータ ID 重複エラー
この時呼び出し元の pUnitId[0]には重複コンバータ ID 番号がセットされます。

補 足

すべてのコンバータがクローズされた状態で呼び出してください。

8

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

書 式

USHORT U2OutPort(int hDriver, USHORT Reg, USHORT OutVal)
機 能GPIB コントローラのレジスタに直接、値を書き込みます。

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

Reg

(IN)

レジスタオフセット値(0〜7 を指定)

OutVal(IN)

レジスタに書き込む値

戻 値

N

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

USHORT InPort(USHORT Reg)

書 式

USHORT U2InPort(int hDriver, USHORT Reg)機 能

GPIB コントローラのレジスタから直接、値を読み込みます。

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

Reg

(IN)

レジスタオフセット値(0〜7 を指定)

戻 値

N

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

9

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

書 式

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

引 数

戻 値

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

GpAdrs(IN)

USB220 の GPIB 機器アドレス

IOBase(IN)

REX-5052 互換のための引数です。0 を指定してください

IrqNo

(IN)

REX-5052 互換のための引数です。0 を指定してください

0

正常終了

-1

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

60

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

int gp̲cli(void)

書 式

int U2Gpcli(int hDriver)機 能

IFC ラインを TRUE にします。

引 数

hDriver

戻 値

0

正常終了

-1

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

GPIB
バス

(IN)

コンバータのハンドル(複数台接続時使用)

IFC
約 10 ms

10

int gp̲ren(void)

書 式

int U2Gpren(int hDriver)機 能

REN ラインを TRUE にします。

引 数

hDriver

戻 値

0

正常終了

-1

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

REN

gp̲ren()の実行

GPIB
バス

(IN)

コンバータのハンドル(複数台接続時使用)

11int gp̲clr(PCHAR adrs)

書 式

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

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

USB 転送時エラー

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

DCL

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

ATN
DATA

UNL
0x3F

LA3
0x23

12

LA5
0x25

SDC
0x04

int gp̲wrt(PCHAR adrs, PCHAR buf)

書 式

int U2Gpwrt(int hDriver, PCHAR adrs, PCHAR buf)
機 能引数 adrs で指定した GPIB 機器に対してデータ送信します。デリミタ指定関数 gp̲delm
および U2Gpdelm で指定されたデリミタを送信データに自動的に付加して送信を行いま
す。

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

buf

(IN)

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

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

64

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

USB 転送時エラー

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

UNL

MTA LA D 2 A B C CR LF
0x23

13

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

書 式

int U2Gpred(int hDriver, PCHAR adrs, PCHAR buf, int bufLen)
機 能

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

引 数

戻 値

GPIB
バス

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

buf

(OUT)

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

bufLen(IN)

受信バッファのサイズ

0

正常終了

-1

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

53

GPIB バスタイムアウト

61

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

63

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

64

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

USB 転送時エラー

ATN
DATA

UNL

TA

MLA

EOI

14

1 2

A B CR LF

UNTint gp̲trg(PCHAR adrs)

書 式

int U2Gptrg(int hDriver, PCHAR adrs)
機 能トリガコマンド（GET）を送信します。

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

戻 値

補 足

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

USB 転送時エラー

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

UNL

15

LA3 LA5
0x23 0x25

GET
0x08

int gp̲wsrq(int WaitSecTime)書 式

int U2Gpwsrq(int hDriver, int WaitSecTime)機 能

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

引 数

戻 値

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

WaitSecTime(IN)

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

0

SRQ 受信-1

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

int gp̲wsrqb(int WaitSecTime)書 式

int U2Gpwsrqb(int hDriver, int WaitSecTime)機 能

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

引 数

戻 値

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

WaitSecTime(IN)

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

0

SRQ 受信-1

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

int gp̲rds(PCHAR adrs, PUCHAR status̲byte)

書 式

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

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

status̲byte(OUT)

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

戻 値

GPIB
バス

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

USB 転送時エラー

ATN
DATA

UNL

LA

SPE
0x18

TA

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

17

SB

SPD
0x19

UNT

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

書 式

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

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

status̲byte(OUT)

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

戻 値

GPIB
バス

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

USB 転送時エラー

ATN
DATA

UNL

SPE
0x18

TA

SB

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

18

SPD
0x19

int gp̲srq(int SrqMode, PAPIFUNC pFunc)

書 式

int U2Gpsrq(int hDriver, int SrqMode, PAPIFUNC pFunc)
機 能

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

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

SrqMode(IN)

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

pFunc

(IN)

コールバック関数のポインタ

戻 値

0

正常終了

-1

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

スレッドクリエートエラー

71

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

19

int gp̲lcl(PCHAR adrs)

書 式

int U2Gplcl(int hDriver, PCHAR adrs)
機 能GPIB 機器をローカル状態に設定します。

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

戻 値

補 足

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

USB 転送時エラー

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

FALSE（ローカル状態）

REN
TRUE(リモート状態)

gp̲lcl の実行

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

ATN
DATA

UNL

LA3
0x23

REN

20

LA5
0x25

GTL
0x01

書 式

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

引 数

hDriver

戻 値

0

正常終了

-1

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

53

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

USB 転送時エラー

GPIB
バス

(IN)

コンバータのハンドル(複数台接続時使用)

ATN
LLO
0x11

DATA

int gp̲tmout(int SecTime)書 式

int U2Gptmout(int hDriver, int SecTime)機 能

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

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

SecTime(IN)

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

戻 値

補 足

0

正常終了

-1

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

72

パラメータ設定エラー

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

21

int gp̲setdelay(int DelayTime)書 式

int U2Gpsetdelay(int hDriver, int DelayTime)機 能

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

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

DelayTime(IN)

ディレイ時間(マイクロ秒単位で指定)

0

正常終了

-1

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

初期設定(0 マイクロ秒)は gp̲init()で行いますので、本関数呼び出しは、gp̲init()の後に行ってください。設定可能な最長ディレイ時間は 65500 マイクロ秒です。

int gp̲count(void)

書 式

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

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

戻 値

N

補 足

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

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

22

int gp̲delm(PCHAR mode, int dlm)

書 式

int U2Gpdelm(int hDriver, PCHAR mode, int dlm)
機 能送信時(gp̲wrt および U2Gpwrt)、受信時(gp̲red および U2Gpred)のデリミタの設定を行ないます。初期設定では送信時デリミタは CR+LF、受信時デリミタは LF(0x0A)となっていま
す。

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

mode

(IN)

dlm

(IN)

“l”で受信時、“t”で送信時の設定を行います。
“b”で受信時・送信時の設定を行います。
デリミタコードを指定します。

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()関数
呼び出し直前に、本関数で再設定を行ってください。

23

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

書 式

int U2Gptfrout(int hDriver, PCHAR adrs, int bufLen, PCHAR buf)
機 能引数 adrs で指定した GPIB 機器に対してバイナリデータを送信します。デリミタは EOI
のみです。

引 数

戻 値

GPIB
バス

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

bufLen(IN)

送信するデータの長さ

buf

(IN)

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

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

64

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

USB 転送時エラー

ATN
DATA
EOI

UNL

MTA LA D1
0x40 0x23

24

D2

D1023

D1024

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

書 式

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

引 数

戻 値

GPIB
バス

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

bufLen(IN)

用意する配列数

buf

(OUT)

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

0

正常終了

-1

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

53

GPIB バスタイムアウト

61

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

63

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

64

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

USB 転送時エラー

ATN
DATA

UNL TA MLA
0x43 0x20

EOI

25

D1

D2

D1023

D1024 UNT

int gp̲tfrinit(PCHAR adrs)

書 式

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

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

0

正常終了

-1

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

53

GPIB バスタイムアウト

63

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

USB 転送時エラー

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

26

書 式

int gp̲tfrins(int bufLen, PCHAR buf)
int U2Gptfrins(int hDriver, int bufLen, PCHAR buf)

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

引 数

戻 値

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

bufLen(IN)

受信するデータの長さ

buf

(OUT)

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

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

24

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

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

53

GPIB バスタイムアウト

64

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

USB 転送時エラー

書 式

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

引 数

hDriver

戻 値ありません。

(IN)

コンバータのハンドル(複数台接続時使用)

27

int gp̲wtb(PCHAR buf)

書 式

int U2Gpwtb(int hDriver, PCHAR buf)
機 能

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

引 数

戻 値

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

buf

(IN)

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

0

正常終了

-1

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

53

GPIB バスタイムアウト

64

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

USB 転送時エラー

GPIB
バス
ATN
DATA

UNL
0x3F

LA
0x23

GTL
0x01

int gp̲myadr(void)

書 式

int U2Gpmyadr(int hDriver)機 能

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

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

戻 値

N

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

-1

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

28

その他の関数
書 式

VOID gp̲wait(int WaitSecTime )機 能

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

引 数

WaitSecTime

戻 値ありません。

(IN)

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

29

補助関数
int gp̲srqCheck(void)

書 式

int U2GpsrqCheck(int hDriver)機 能

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

引 数

hDriver

戻 値

1

SRQ ラインが TRUE

0

SRQ ラインが FALSE-1

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

コンバータのハンドル(複数台接続時使用)

30

int gp̲wrtd(PCHAR buf, int bufLen)

書 式

int U2Gpwrtd(int hDriver, PCHAR buf, int bufLen)
機 能

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

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

buf

(IN)

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

bufLen(IN)

送信するデータサイズ

0

正常終了

-1

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

53

GPIB バスタイムアウト

64

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

USB 転送時エラー

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

ATN

H

D 2 A B C CR LF

DATA

31

int gp̲tfroutd(int bufLen, PCHAR buf)

書 式

int U2Gptfroutd(int hDriver, int bufLen, PCHAR buf)
機 能GPIB バス上にバイナリデータ送信します。

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

bufLen(IN)

送信するデータサイズ

buf

(IN)

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

戻 値

補 足

0

正常終了

-1

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

53

GPIB バスタイムアウト

64

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

USB 転送時エラー

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

ATN
DATA

H

D1

32

D2

D1023

D1024

int gp̲redd(PCHAR buf, int bufLen)

書 式

int U2Gpredd(int hDriver, PCHAR buf, int bufLen)
機 能

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

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

buf

(OUT)

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

bufLen(IN)

受信バッファのサイズ

0

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

24

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

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

53

GPIB バスタイムアウト

64

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

USB 転送時エラー

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

ATN

H

DATA

D 2 A B C CR LF

33

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

書 式

int U2Gpredah(int hDriver, PCHAR adrs, PCHAR buf, int bufLen)
機 能

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

引 数

戻 値

補 足

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(IN)

GPIB 機器アドレス

buf

(OUT)

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

bufLen(IN)

受信バッファのサイズ

0

正常終了

-1

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

53

GPIB バスタイムアウト

61

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

63

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

64

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

USB 転送時エラー

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

UNL

TA

MLA

34

1 2

A B CR LF

int gp̲redrst(void)

書 式

int U2Gpredrst(int hDriver)機 能本関数は、リスナ解除、RFD ホールドオフの解除を行います。

引 数

hDriver

戻 値

0

正常終了

-1

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

コンバータのハンドル(複数台接続時使用)

int gp̲findlstn(PCHAR adrs, int adrsLen)

書 式

int U2Gpfindlstn(int hDriver, PCHAR adrs, int adrsLen)
機 能GPIB バスに接続されているリスナ機器を検出し、GPIB アドレスを取得します。

引 数

hDriver(IN)

コンバータのハンドル(複数台接続時使用)

adrs

(OUT)

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

adrsLen(IN)

バッファのサイズ

戻 値

補 足

0

リスナ未検出-1

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

53

GPIB バスタイムアウト

64

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

N

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

35