AioSetAiCallBackProc


機能

アナログ入力に関するイベントが発生した際に呼び出されるコールバック関数を登録します。

書式

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

引数

Id [ C, C++: short ] [ Python: ctypes.c_short ]
AioInit 関数で取得したデバイスIDを指定します。

CallBackProc [ C, C++: long * ] [ Python: ctypes.POINTER(ctypes.c_long) ]
コールバック関数のアドレスを指定します。

AiEvent [ C, C++: long ] [ Python: ctypes.c_long ]
コールバック関数を呼び出すイベント要因を、以下の範囲からマクロもしくは数値で指定します。
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

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

Param [ C, C++: void * ] [ Python: ctypes.c_void_p ]
コールバックに渡すパラメータのアドレスを指定します。
パラメータが必要ない場合は、NULLを指定してください。

戻り値

Ret [ C, C++: long ] [ Python: ctypes.c_long ]

戻り値

内容

0

正常終了

7

スタンバイモードから復帰したため、AioResetDevice関数を実行してください

10001

無効なIDが指定されました
関数に指定するIDは、AioInitで取得したIDを使用してください。

10002

ドライバを呼び出せません
始めにAioInit関数を実行しください。

20001

使用しているデバイスではこの関数を使用することができません

20002

デバイスが動作中のため実行できません
この関数を使用するには、アナログ入力動作が停止している必要があります。

20003

他のプロセスがデバイスを使用しているため、実行できません
他のプロセスがデバイスを使用しているときは、マルチプロセス対応関数以外実行できません。

説明

この関数を使用してコールバック関数の登録を行うことで、デバイスで何らかのイベントが発生した際にコールバック関数が呼び出されます。

アナログ入力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。

AioStopAi関数を実行した時には、コールバック関数は呼ばれません。

コールバックルーチン内では、デバイスの動作を開始・停止する関数を実行することはできません。

Ethernetデバイスの場合
    デバイスとの通信が途切れるとプロセスの登録が解除され、イベントが通知されなくなります。
    イベント通知を再び行う場合、本関数で再度設定を行ってしてください。

使用例

デバイス動作終了、指定サンプリング回数格納イベント要因でコールバック関数を登録します。

C, C++

long Ret;
Ret = AioSetAiCallBackProc ( Id , CallBackProc , AIE_END | AIE_DATA_NUM , this );
 

Python

Ret = ctypes.c_long()
Ret.value = caio.AioSetAiCallBackProc ( Id , CallBackProc , caio.AIE_END | caio.AIE_DATA_NUM , 0 )
 

関連項目


コールバック関数

書式

Ret = CallBackProc ( Id , Message , wParam , lParam , Param )

引数

Id [ C, C++: short ] [ Python: ctypes.c_short ]
AioInit 関数で取得したIDが渡されます。

Message [ C, C++: short ] [ Python: ctypes.c_short ]
コールバック関数呼び出しの原因となるメッセージ番号が渡されます。
メッセージ番号は、以下のいずれかの値です。

アナログ入力メッセージ要因

マクロ

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

AIOM_AIE_START

1000H

リピート終了イベント

AIOM_AIE_RPTEND

1001H

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

AIOM_AIE_END

1002H

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

AIOM_AIE_DATA_NUM

1003H

指定転送数毎イベント

AIOM_AIE_DATA_TSF

1007H

オーバーフローイベント

AIOM_AIE_OFERR

1004H

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

AIOM_AIE_SCERR

1005H

AD変換エラーイベント

AIOM_AIE_ADERR

1006H

wParam [ C, C++: long ] [ Python: ctypes.c_long ]
ドライバからパラメータが渡されます。現在は使用しません。

lParam [ C, C++: long ] [ Python: ctypes.c_long ]
イベントごとに固有のパラメータが渡されます。

イベント要因

パラメータ

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

なし

リピート終了イベント

現在のリピート回数

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

現在のサンプリング回数

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

現在のサンプリング回数

指定転送数毎イベント

現在の転送回数

オーバーフローエラーイベント

現在のサンプリング回数

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

現在のサンプリング回数

AD変換エラーイベント

現在のサンプリング回数

Param [ C, C++: void * ] [ Python: ctypes.c_void_p ]
AioSetAiCallBackProc関数に指定したパラメータが渡されます。
パラメータにNULLが指定された場合、ここにはNULLが格納されます。