EN JA
GPIB(3)
GPIB(3) FreeBSD Library Functions Manual GPIB(3)

名称

ibclr, ibdev, ibdma, ibeos, ibeot, ibloc, ibonl, ibpad, ibrd, ibsad, ibsic, ibtmo, ibtrg, ibwrtGPIB ライブラリ

ライブラリ

General-Purpose Instrument Bus (GPIB) library (libgpib, -lgpib)

書式

#include < gpib.h>

extern int ibcnt, iberr, ibsta;


int
ibask( int handle, int option, int *retval);

int
ibbna( int handle, char *bdname);

int
ibcac( int handle, int v);

int
ibclr( int handle);

int
ibcmd( int handle, void *buffer, long cnt);

int
ibcmda( int handle, void *buffer, long cnt);

int
ibconfig( int handle, int option, int value);

int
ibdev( int boardID, int pad, int sad, int tmo, int eot, int eos);

int
ibdiag( int handle, void *buffer, long cnt);

int
ibdma( int handle, int v);

int
ibeos( int handle, int eos);

int
ibeot( int handle, int eot);

int
ibevent( int handle, short *event);

int
ibfind( char *bdname);

int
ibgts( int handle, int v);

int
ibist( int handle, int v);

int
iblines( int handle, short *lines);

int
ibllo( int handle);

int
ibln( int handle, int padval, int sadval, short *listenflag);

int
ibloc( int handle);

int
ibonl( int handle, int v);

int
ibpad( int handle, int pad);

int
ibpct( int handle);

int
ibpoke( int handle, int option, int value);

int
ibppc( int handle, int v);

int
ibrd( int handle, void *buffer, long cnt);

int
ibrda( int handle, void *buffer, long cnt);

int
ibrdf( int handle, char *flname);

int
ibrdkey( int handle, void *buffer, int cnt);

int
ibrpp( int handle, char *ppr);

int
ibrsc( int handle, int v);

int
ibrsp( int handle, char *spr);

int
ibrsv( int handle, int v);

int
ibsad( int handle, int sad);

int
ibsgnl( int handle, int v);

int
ibsic( int handle);

int
ibsre( int handle, int v);

int
ibsrq( (*func) void));

int
ibstop( int handle);

int
ibtmo( int handle, int tmo);

int
ibtrap( int mask, int mode);

int
ibtrg( int handle);

int
ibwait( int handle, int mask);

int
ibwrt( int handle, const void *buffer, long cnt);

int
ibwrta( int handle, const void *buffer, long cnt);

int
ibwrtf( int handle, const char *flname);

int
ibwrtkey( int handle, const void *buffer, int cnt);

int
ibxtrc( int handle, void *buffer, long cnt);

解説

ibclr ライブラリは、 gpib(4) カーネルデバイスへのアクセスを提供します。

変数解説

変数 ibcnt は、 ibcmd(), ibrd() または ibwrt() への最新の呼び出しで転送されたバイト数を含んでいます。

名前 ibcntl は、後方互換性のために提供された ibcnt のための別名です。

変数 iberr は、最新のライブラリ呼び出しのためのエラーコードを提供します。指定できるエラーコードは、次の通りです:

EDVR
System error
ECIC
Not Active Controller
ENOL
Nobody listening
EADR
Controller not addressed
EARG
Invalid argument
ESAC
Not System Controller
EABO
I/O Aborted/Time out
ENEB
No such controller
EOIP
Async I/O in progress
ECAP
No such capability
EFSO
File system error
EBUS
Command byte xfer error
ESTB
Serial poll status byte lost
ESRQ
SRQ line stuck
ETAB
Table problem

変数 ibsta は、コントローラの状態を含んでいます。これは、次の個別のビット名がある論理和 (OR) された状態値です:

ERR
Error
TIMO
Timeout
END
EOI/EOS
SRQI
SRQ
RQS
Device requests service
SPOLL
Serial Poll
EVENT
Event occurred
CMPL
I/O complete
LOK
Lockout
REM
Remote
CIC
CIC
ATN
ATN
TACS
Talker
LACS
Listener
DTAS
Device trigger status
DCAS
Device clear state

関数解説

関数 ibdev() は、GPIB デバイスをオープンし、特定のバスデバイスと通信するためにパラメータを確立するために使用されます。デバイスは、0 と 30 の間の数値である、その主要なアドレス pad によって選択され、96 と 126 の間の数値、または二次的なアドレス付けを使用しない 0 である、その二次的アドレス sad がことによると追加されます。 tmo 値は、デバイスと通信するとき使用するタイムアウトを指定します。これは、定数の TNONE, T10us, T30us, T100us, T300us, T1ms, T3ms, T10ms, T30ms, T100ms, T300ms, T1s, T3s, T10s, T30s, T100s, T300s または T1000s のいずれかを指定できます。ブール値パラメータ eot は、メッセージの最後のバイトをデバイスに送信するとき、バスシグナル EOI (end-or-identify) がアサート (assert) されるべきであるかどうか指定します。最後に、 eos パラメータは、バスのメッセージを転送するとき、デバイスメッセージの終わりを識別するために使用されるべきであるかどうかを決定します。 eos の下位 8 ビットは、文字列の終りの文字、 EOS として解釈されます。この文字を、次の値で論理和 (OR) することができます:

REOS
EOS 文字にマッチするバス上でメッセージバイトを受信するとき、まるで EOI シグナルがアサートされるかのように扱い、送信を停止します。
XEOS
EOS 文字にマッチするバス上でメッセージバイトを受信するとき、同じ時間で EOI バスシグナルをアサートし、送信を停止します。
BIN
設定されるなら、比較で EOS 文字のすべての 8 ビットを含めます。設定されていないなら、7 ビット ASCII 値だけを比較します。

eos として 0 を渡すことは、すべての特殊文字の処理をオフにし、完全に 8 ビットのトランスペアレントな通信チャネルをデバイスに許可します。

関数 ibfind() は、名前 bdname によって識別されるボードの ボードインデックス (board index) を見つけます。 この関数は、現在、実装されていません。

すべての残された関数は、それらの最初の引数 handle として ibdev() を呼び出すことによって返されたハンドルを取ります。

関数 ibask() は、 ibconfig() で設定された設定値を問い合わせるために使用されます。 この関数は、現在、実装されていません。

関数 ibbna() は、与えられたデバイスのためにアクセスボードを bdname と名前が付けられた、新しいものに変更します。 この関数は、現在、実装されていません。

関数 ibcac() は、 ATN シグナル線をアサートすることによってバス上のアクティブなコントローラになるために使用されます。 この関数は、現在、実装されていません。

関数 ibclr() は、 Selected Device Clear コマンドをデバイスに転送するために使用されます。

関数 ibcmd() は、 buffer で始まるバッファからデバイスまで直接 cnt GPIB コマンドバイトを書く込むために使用されます。 この関数は、現在、実装されていません。

関数 ibcmda() は、非同期に動作することを除いて、 ibcmd() と同じですので、それは、直ちに呼び出し側に戻ります。 この関数は、現在、実装されていません。

関数 ibconfig() は、特定の設定パラメータを設定するために使用されます。 この関数は、現在、実装されていません。

関数 ibdiag() は、時代遅れで、実装されていません。

関数 ibdma() は、DMA 転送を有効にするか、または無効にするために使用されます。パラメータ v は、DMA 転送が使用されていることを示すブール値のパラメータです。ハードウェアとオペレーティングシステムの設定によって、 DMA 転送は、特定のアクセスボードで利用可能でないかもしれません。

関数 ibeos() は、文字列の終りの文字を設定します。説明については、 ibdev() を参照してください。

関数 ibeot() は、メッセージの最後のバイトを転送するとき、 EOI シグナル線のアサーションを設定します。説明については、 ibdev() を参照してください。

関数 ibevent() は、ボードのイベントキューからのイベントを取得するために使用されます。 この関数は、現在、実装されていません。

関数 ibgts() は、 ATN シグナル線をデアサート (deasserting) することによって、現在のコントローラをスタンドバイコントローラにします。 この関数は、現在、実装されていません。

関数 ibist() は、コントローラの個別のステータスビットを値 v に設定します。 この関数は、現在、実装されていません。

関数 iblines() は、コントロールの状態とハンドシェイクバスラインの状態を lines によって指される領域に返します。 この関数は、現在、実装されていません。

関数 ibllo() は、時代遅れで、実装されていません。

関数 ibln() は、主要なアドレス padval とオプションの二次的なアドレス sadval でリスナ (listener) をチェックします。リスナが見つからないなら、 listenflag によって指された値は、 0 以外に設定されます。 この関数は、現在、実装されていません。

関数 ibloc() は、デバイスをローカルモードに切り替えます。

関数 ibonl() は、デバイスハンドルをクローズするか、または再初期化するために使用されます。パラメータ v が 0 として渡されるなら、ハンドルは、クローズされ、再び使用されることはできません。 0 以外の値として渡されるなら、ハンドルのすべてのパラメータは、それらのデフォルトに戻されます。 この機能は、現在、サポートされていません。

関数 ibpad() は、 pad と通信しているデバイスの主要なアドレスを変更するために使用されます。説明については、 ibdev() を参照してください。

関数 ibpct() は、デバイスをハンドル controller-in-charge と関連付けるために使用されます。 この関数は、現在、実装されていません。

関数 ibpoke() は、時代遅れで、実装されていません。

関数 ibppc() は、パラレルポーリング要求を v に設定するために使用されます。 この関数は、現在、実装されていません。

関数 ibrd() は、デバイスから cnt バイトを受信して、 buffer として渡されたアドレスにそれを格納するために使用されます。

関数 ibrda() は、非同期に動作することを除いて ibrd() と同様に振る舞い、直ちに呼び出し側に戻ります。 この関数は、現在、実装されていません。

関数 ibrdf() は、デバイスからデータを読み込んで、それを名前 flname に追加します。 この関数は、現在、実装されていません。

関数 ibrdkey() は、時代遅れで、実装されていません。

関数 ibrpp() は、パラレルポーリングを実行して、 ppr によって指された位置に、結果を格納します。 この関数は、現在、実装されていません。

関数 ibrsc() は、引数 v が 0 でないなら、ハンドルによって指定されたボードを システムコントローラ とします。 この関数は、現在、実装されていません。

関数 ibrsp() は、シリアルポーリングを行って、 spr によって指されたバイトに結果を格納します。 この関数は、現在、実装されていません。

関数 ibrsv() は、ボードのシリアルポーリングの応答を v に設定し、SRQ ビット (0x40) が設定されているなら、コントローラからサービスを要求します。 この関数は、現在、実装されていません。

関数 ibsad() は、 sad と通信しているデバイスの二次的アドレスを変更します。説明については、 ibdev() を参照してください。

関数 ibsgnl() は、時代遅れで、実装されていません。

関数 ibsic() は、少なくとも 100 マイクロ秒の間、バス上で Interface Clear (IFC) シグナルをアサートします。これは、すべてのバスにアタッチされたデバイスを listen しなくて、talk しないようにします。この関数は、システムコントローラでのみ実行されるべきです。

関数 ibsre() は、引数 v が 0 でないなら、バス上で Remote Enable (REN) シグナル線をアサートし、そうでなければ、デアサート (deassert) します。 この関数は、現在、実装されていません。

関数 ibsrq() は、時代遅れで、実装されていません。

関数 ibstop() は、任意の非同期 I/O 操作を停止するかか、または中断します。 この関数は、現在、実装されていません。

関数 ibtmo() は、通信タイムアウトを再設定します。説明については、 ibdev() を参照してください。

関数 ibtrap() は、時代遅れで、実装されていません。

関数 ibtrg() は、 Group Execute Trigger (GET) コマンドをデバイスに送信します。

関数 ibwait() は、 mask によって指定される状態条件をウェート (wait) します。 mask が 0 として与えられるなら、直ちに戻ります。 この関数は、現在、実装されていません。

関数 ibwrt() は、 buffer によって指されたアドレスから始まって、 cnt バイトをデバイスに送信するために使用されます。

関数 ibwrta() は、非同期な方法で ibwrt() と同じ操作を実行し、直ちに呼び出し側に戻ります。 この関数は、現在、実装されていません。

関数 ibwrtf() は、 flname によって指定されたファイルをオープンし、内容をデバイスに送信します。 この関数は、現在、実装されていません。

関数 ibwrtkey() は、時代遅れで、実装されていません。

関数 ibxtrc() は、時代遅れで、実装されていません。

戻り値

関数 ibdev() は、残された関数で使用されるハンドルを返します。失敗すれば、-1 が返されます。

他のすべての関数は、変数 ibsta の値を返します。

診断

なし。

互換性

ibclr ライブラリは、National Instruments によって出荷される GPIB ライブラリと互換性があるように見える、Linux GPIB ライブラリと互換性があるようしようとしています。

エラー

上記の関数のエラーで、次に値の 1 つを errno に設定するかもしれません:
[ ENOENT]
No such file or directory. (そのようなファイルまたはディレクトリはありません)。
[ EIO]
Input/output error. (入出力エラーです)。
[ ENXIO]
Device not configured. (デバイスが準備されていません)。
[ E2BIG]
Argument list too long. (引数のリストが長すぎます)。
[ ENOMEM]
Cannot allocate memory. (メモリの割り当てができません)。
[ EACCES]
Permission denied. (パーミッションが拒絶されました)
[ EFAULT]
Bad address. (不正なアドレスです)。
[ EBUSY]
Device busy. (デバイスがビジー状態です)。
[ EINVAL]
Invalid argument. (無効な引数です)。
[ ENFILE]
Too many open files in system. (システム内でオープンされているファイルが多すぎます)。
[ EMFILE]
Too many open files. (オープンしているファイルが多すぎます)。
[ EOPNOTSUPP]
Operation not supported. (操作がデバイスによってサポートされていません)。

関連項目

gpib(4)

歴史

ibclr ライブラリは、 Poul-Henning Kamp によって書かれ、 FreeBSD 5.4 ではじめて登場しました。

作者

このマニュアルページは、 Jörg Wunsch によって書かれました。

バグ

現在、ライブラリは、インスタンス番号 0 で単一の gpib(4) デバイスだけを扱うことができます。

多くの関数は、現在実装されていません、詳細については、上記を参照してください。

February 1, 2010 FreeBSD