コールバック関数

AioSetAiCallBackProc関数を使用して、コールバック関数の登録を行います。

Ret = AioSetAiCallBackProc ( Id , CallBackProc , AiEvent , Param)

CallBackProcには、作成したコールバック関数のポインタを指定します。
各言語で以下のように設定してください。

コールバック関数名をCallBackProcとした場合

VB:Ret = AioSetAiCallBackProc(Id, AddressOf CallBackProc, AIE_END, 0)
VC:Ret = AioSetAiCallBackProc(Id, CallBackProc, AIE_END, this);

AiEventには、イベント要因を以下の範囲からマクロもしくは数値で指定します。
AiEventはビット単位で以下のような意味を持ち、これらを組み合わせて指定可能です。
デバイスバッファとユーザーバッファで、使用できるイベント要因は異なります。

イベント要因

デバイスバッファ

使用時

ユーザーバッファ

使用時

マクロ

AD変換開始条件成立イベント

AIE_START

00000002H

リピート終了イベント

AIE_RPTEND

00000010H

デバイス動作終了イベント

AIE_END

00000020H

指定サンプリング回数格納イベント

×

AIE_DATA_NUM

00000080H

指定転送数毎イベント

×

AIE_DATA_TSF

00000100H

オーバーフローイベント

AIE_OFERR

00010000H

サンプリングクロック周期エラーイベント

AIE_SCERR

00020000H

AD変換エラーイベント

AIE_ADERR

00040000H

AD変換開始条件成立イベント
AD変換の開始条件が成立したときに発生するイベントです。
このイベントは、変換開始条件がソフトウェアの場合には無効になります。

リピート終了イベント
リピート動作が終了するたびにイベントを発生します。

デバイス動作終了イベント
リピートを含む、全ての動作が終了したときに発生するイベントです。

指定サンプリング回数格納イベント
メモリ内のサンプリング数がAioSetAiEventSamplingTimes関数で設定した値を超えたときにイベントを発生します。

メモリ形式がFIFOの場合、条件を満たすごとに何度もイベントが発生します。
RINGメモリの場合、リピート回数分のイベントが発生します。

指定サンプリング回数格納イベントを使用する場合、AioSetAiEventSamplingTimes関数でイベントを発生させるサンプリング回数を設定します。

Ret = AioSetAiEventSamplingTimes ( Id , AiSamplingTimes )

AiSamplingTimesにイベントを発生させるサンプリング回数を設定します。

メモリ形式がFIFOの場合、条件を満たすごとに何度もイベントが発生します。
RINGメモリの場合、リピート回数分のイベントが発生します。

指定転送数毎イベント
AioSetAiEventTransferTimes関数で設定された数のデータ転送が行われるたびに発生するイベントです。
指定転送数毎イベントを使用する場合、AioSetAiEventTransferTimes関数でイベントを発生させる転送数を設定します。

Ret = AioSetAiEventTransferTimes ( Id , AiTransferTimes )

AiTransferTimesにイベントを発生させる転送数を設定します。

オーバーフローイベント
メモリがフルの状態で変換データを格納しようとしたときに発生するイベントです。

サンプリングクロック周期エラーイベント
サンプリングクロック周期が速すぎて変換が停止するときに発生するイベントです。

AD変換エラーイベント
AD変換エラーが発生して変換が停止するときに発生するイベントです。

Paramにはコールバック関数に渡す任意のパラメータをポインタで設定します。