アナログ入力に関するWindowメッセージ通知のイベント要因を設定します。
Ret = AioSetAiEvent ( Id , hWnd , AiEvent )
Id
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
AioInit 関数で取得したデバイスIDを指定します。
hWnd
[ VB.NET: IntPtr ] [ C, C++: HWND ] [ C#: IntPtr ] [ Python: ctypes.wintypes.HANDLE
]
Windowハンドルを指定します。
AiEvent
[ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ 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関数でイベントを発生させるサンプリング回数を設定してください。
指定転送数毎イベントを使用する場合、AioSetAiEventTransferTimes関数でイベントを発生させる転送回数を設定してください。
Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
戻り値 |
内容 |
0 |
正常終了 |
7 |
スタンバイモードから復帰したため、AioResetDevice関数を実行してください |
10001 |
無効なIDが指定されました |
10002 |
ドライバを呼び出せません |
20001 |
使用しているデバイスではこの関数を使用することができません |
20002 |
デバイスが動作中のため実行できません |
20003 |
他のプロセスがデバイスを使用しているため、実行できません |
全てのデバイスでAiEvent = 0(イベント未使用)
この関数で設定されたイベント要因は、イベントメッセージルーチンにメッセージとして通知されます。
メッセージの種類は次の通りです。
アナログ入力メッセージ要因 |
マクロ |
値 |
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 |
アナログ入力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。
コールバックルーチン(AioSetAiCallBackProc)との併用はできません。
Ethernetデバイスの場合
デバイスとの通信が途切れるとプロセスの登録が解除され、イベントが通知されなくなります。
イベント通知を再び行う場合、本関数で再度設定を行ってしてください。
デバイス動作終了イベント、指定サンプリング回数格納イベントを設定します。
VB.NET |
WndProc使用 Dim Ret As Integer |
C, C++ |
long Ret; |
C# |
WndProc使用 int Ret; |
Python |
Ret = ctypes.c_long() |
AioGetAiEvent AioSetAiEventSamplingTimes AioGetAiEventSamplingTimes
イベントメッセージルーチン
AioSetAiEvent関数で設定したイベント要因が発生すると、イベントメッセージルーチンが呼び出されます。
イベントメッセージルーチンで渡される引数には、3つ重要な値があります。[メッセージ番号]、[デバイスID]、[イベントごとの固有パラメータ]
各引数の詳細は、以下の通りです。
・メッセージ番号 (m.Msgプロパティ/message引数)
アナログ入力メッセージ要因 |
マクロ |
値 |
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 |
・デバイスID (m.WParamプロパティ/wParam引数)
同一PC上で複数デバイスを利用している場合、イベントメッセージルーチン内でデバイスIDを判別することで、イベントを発生させたデバイスが特定してください。
単一デバイスのみを利用している場合は、イベントメッセージルーチン内でデバイスIDを判別する必要はありません。
[メッセージ番号]と[イベントごとの固有パラメータ]とで、イベントメッセージルーチン内の処理を行うことができます。
・イベントごとの固有パラメータ (m.LParamプロパティ/lParam引数)
イベント要因 |
パラメータ |
AD変換開始条件成立イベント |
なし |
リピート終了イベント |
現在のリピート回数 |
デバイス動作終了イベント |
現在のサンプリング回数 |
指定サンプリング回数格納イベント |
現在のサンプリング回数 |
指定転送数毎イベント |
現在の転送回数 |
オーバーフローエラーイベント |
現在のサンプリング回数 |
サンプリングクロック周期エラーイベント |
現在のサンプリング回数 |
AD変換エラーイベント |
現在のサンプリング回数 |
イベントメッセージルーチン処理の記述方法は、利用している開発言語によって異なります。
以下に、イベントメッセージルーチンをオーバーライドする方法と、引数の概略を示します。
詳細は、Microsoft社から提供されているドキュメントを参照ください。
Visual Basic .NET使用時のイベントメッセージルーチン(WndProc使用)
オーバーライド方法
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
引数System.Windows.Forms.Message構造体の以下の3つのプロパティを参照ください。
m.Msg:メッセージ番号が渡されます。
m.WParam:下位2バイトにデバイスIDが渡されます。上位2バイトは現在使用しません。
m.LParam:イベントごとに固有のパラメータが渡されます。
Visual C# .NET使用時のイベントメッセージルーチン(WndProc使用)
オーバーライド方法
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
Name="FullTrust")]
protected override void WndProc (ref Message m)
引数Message構造体内の以下の3つのプロパティを参照ください。
m.Msg:メッセージ番号が渡されます。
m.WParam:下位2バイトにデバイスIDが渡されます。上位2バイトは現在使用しません。
m.LParam:イベントごとに固有のパラメータが渡されます。
Visual C++使用時のイベントメッセージルーチン
オーバーライド方法
LRESULT CVC6Dlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
DefWindowsProcメッセージルーチンの3つの引数を参照ください。
各引数の詳細は、以下の通りです。
message:メッセージ番号が渡されます。
wParam:下位2バイトにデバイスIDが渡されます。上位2バイトは現在使用しません。
lParam:イベントごとに固有のパラメータが渡されます。