アナログ入力に関するイベントが発生した際に呼び出されるコールバック関数を登録します。
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はビット単位で以下のような意味を持ち、これらを組み合わせて指定可能です。
デバイスバッファ使用時とユーザーバッファ使用時で使用可能なイベント要因が異なります。
イベント要因 |
デバイスバッファ |
ユーザーバッファ |
マクロ |
値 |
○ |
○ |
AIE_START |
00000002H |
|
○ |
○ |
AIE_RPTEND |
00000010H |
|
○ |
○ |
AIE_END |
00000020H |
|
○ |
× |
AIE_DATA_NUM |
00000080H |
|
× |
○ |
AIE_DATA_TSF |
00000100H |
|
○ |
○ |
AIE_OFERR |
00010000H |
|
○ |
○ |
AIE_SCERR |
00020000H |
|
○ |
○ |
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が指定されました |
10002 |
ドライバを呼び出せません |
20001 |
使用しているデバイスではこの関数を使用することができません |
20002 |
デバイスが動作中のため実行できません |
20003 |
他のプロセスがデバイスを使用しているため、実行できません |
この関数を使用してコールバック関数の登録を行うことで、デバイスで何らかのイベントが発生した際にコールバック関数が呼び出されます。
アナログ入力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。
AioStopAi関数を実行した時には、コールバック関数は呼ばれません。
コールバックルーチン内では、デバイスの動作を開始・停止する関数を実行することはできません。
Ethernetデバイスの場合
デバイスとの通信が途切れるとプロセスの登録が解除され、イベントが通知されなくなります。
イベント通知を再び行う場合、本関数で再度設定を行ってしてください。
デバイス動作終了、指定サンプリング回数格納イベント要因でコールバック関数を登録します。
C, C++ |
long
Ret; |
Python |
Ret
= ctypes.c_long() |
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 ]
コールバック関数呼び出しの原因となるメッセージ番号が渡されます。
メッセージ番号は、以下のいずれかの値です。
アナログ入力メッセージ要因 |
マクロ |
値 |
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 |
|
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が格納されます。