IBWRTA

NI-488.2

IBWRTA

ボードレベル/デバイスレベル


目的

ユーザバッファからデバイスにデータを非同期に書き込みます。

形式

C

unsigned long ibwrta (int ud, const void *wrtbuf, size_t count)

Visual Basic

CALL ibwrta (ud%, wrtbuf$)

または

status% = ilwrta (ud%, wrtbuf$, count&)

対話式制御(使用に関する注意)

ibwrta wrtbuf

入力

ud ボードまたはデバイスデスクリプタ
wrtbuf 書き込むバイトが格納されているバッファのアドレス
count 書き込むバイト数

出力

関数からの戻り値 Ibstaの値

説明

デバイスレベル

udがデバイスデスクリプタの場合、ibwrtaはGPIBを適切にアドレス指定して、countバイトをwrtbufで指定されたバッファから GPIBデバイスに書き込みます。countバイトが送信されると操作は正常終了します。転送された実際のバイト数はIbcntグローバル関数に返されます。

ボードレベル

udがボードデスクリプタの場合、ibwrtawrtbufからcountバイトをGPIBデバイスに非同期で書き込む操作を開始します。ボードレベルのibwrtfは、GPIBがすでに正しくアドレス指定されているものと仮定します。countバイトが送信されると操作は正常終了します。ボードがCICでなく、CICがGPIB上でDCL(Device Clear: デバイスクリア)を送信すると、操作はエラーで終了します。転送された実際のバイト数はIbcntグローバル関数に返されます。

ボードレベル/デバイスレベル

非同期のI/Oコール(ibcmdaibrdaibwrta)は、I/O処理中にアプリケーションがGPIB以外の処理を実行できるように設計されています。非同期のI/Oが開始されると、後続のNI-488.2コールは厳しく制限されます。実行中のI/O処理を干渉するようなコールはすべて拒否されます。 この場合、ドライバがEOIPを返します。

I/Oが完了したら、アプリケーションはNI-488.2ドライバと再同期化する必要があります。再同期化を行うには、以下のいずれかのコールを使用してください。

ibwait 返されたIbstaにCMPLが含まれている場合、ドライバとアプリケーションは再同期化されています。
ibnotify ibnotify Callbackに渡されたIbstaの値にCMPLが含まれている場合、ドライバとアプリケーションは再同期化されています。
ibstop I/Oが取り消され、ドライバとアプリケーションが再同期化されます。
ibonl I/Oが取り消されインタフェースはリセットされて、ドライバとアプリケーションが再同期化されます。

発生する可能性のあるエラー

EABO ボードレベル: CICからDCL(Device Clear: デバイスクリア)のメッセージを受信しました。
EADR ボードレベル: GPIBが正しくアドレス指定されませんでした。ibcmdを使ってGPIBをアドレス指定してください。
デバイスレベル: デバイスのGPIBアドレスとアクセスボードのGPIBアドレス間に競合が存在します。代わりにIbcPADIbcSADibconfig)を使用してください。
EARG バッファまたはcountが無効です。
EBUS デバイスレベル: デバイスがGPIBに接続されていません。
ECIC デバイスレベル: アクセスボードがCICでありません。デバイスレベルのコールとバスの管理を参照してください。
EDVR NI-488.2ドライバの構成またはインストールが正しくありません。
EHDL udが無効または範囲外です。
ELCK 他の処理によりロックされているため、要求された動作が行われませんでした。
ENEB インタフェースが取り付けられていないか、正しく構成されていません。
ENOL バス上にリスナが検出されませんでした。
EOIP 非同期I/Oの処理中です。