アナログ出力に関するWindowメッセージ通知のイベント要因を設定します。
Ret = AioSetAoEvent ( Id , hWnd , AoEvent )
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ハンドルを指定します。
AoEvent
[ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long
]
イベント要因を以下の範囲からマクロもしくは数値で指定します。
AoEventはビット単位で以下のような意味を持ち、これらを組み合わせて指定可能です。
デバイスバッファ使用時とユーザーバッファ使用時で使用可能なイベント要因が異なります。
イベント要因 |
デバイスバッファ使用時 |
ユーザーバッファ使用時 |
マクロ |
値 |
○ |
○ |
AOE_START |
00000002H |
|
○ |
○ |
AOE_RPTEND |
00000010H |
|
○ |
○ |
AOE_END |
00000020H |
|
○ |
× |
AOE_DATA_NUM |
00000080H |
|
× |
○ |
AOE_DATA_TSF |
00000100H |
|
○ |
○ |
AOE_SCERR |
00020000H |
|
○ |
○ |
AOE_DAERR |
00040000H |
指定ジェネレーティング回数出力イベントを使用する場合、AioSetAoEventSamplingTimes関数でイベントを発生させるジェネレーティング回数を設定してください。指定転送数毎イベントを使用する場合、AioSetAoEventTransferTimes関数でイベントを発生させる転送回数を設定してください。
Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
戻り値 |
内容 |
0 |
正常終了 |
7 |
スタンバイモードから復帰したため、AioResetDevice関数を実行してください |
10001 |
無効なIDが指定されました |
10002 |
ドライバを呼び出せません |
20001 |
使用しているデバイスではこの関数を使用することができません |
20002 |
デバイスが動作中のため実行できません |
20003 |
他のプロセスがデバイスを使用しているため、実行できません |
全てのデバイスでAoEvent = 0(イベント未使用)
この関数で設定されたイベント要因は、イベントメッセージルーチンにメッセージとして通知されます。
メッセージの種類は次の通りです。
アナログ出力メッセージ要因 |
マクロ |
値 |
AIOM_AOE_START |
1020H |
|
AIOM_AOE_RPTEND |
1021H |
|
AIOM_AOE_END |
1022H |
|
AIOM_AOE_DATA_NUM |
1023H |
|
AIOM_AOE_DATA_TSF |
1027H |
|
AIOM_AOE_SCERR |
1025H |
|
AIOM_AOE_DAERR |
1026H |
アナログ出力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。
コールバックルーチン(AioSetAoCallBackProc)との併用はできません。
Ethernetデバイスの場合
デバイスとの通信が途切れるとプロセスの登録が解除され、イベントが通知されなくなります。
イベント通知を再び行う場合、本関数で再度設定を行ってしてください。
デバイス動作終了イベント、指定ジェネレーティング回数格納イベントを設定します。
VB.NET |
WndProc使用 Dim Ret As Integer |
C, C++ |
long Ret; |
C# |
WndProc使用 int Ret; |
Python |
Ret = ctypes.c_long() |
AioGetAoEvent AioSetAoEventSamplingTimes AioGetAoEventSamplingTimes
AioSetAoEvent関数で設定したイベント要因が発生すると、イベントメッセージルーチンが呼び出されます。
イベントメッセージルーチンで渡される引数には、3つ重要な値があります。[メッセージ番号]、[デバイスID]、[イベントごとの固有パラメータ]
各引数の詳細は、以下の通りです。
・メッセージ番号 (m.Msgプロパティ/message引数)
アナログ出力メッセージ要因 |
マクロ |
値 |
AIOM_AOE_START |
1020H |
|
AIOM_AOE_RPTEND |
1021H |
|
AIOM_AOE_END |
1022H |
|
AIOM_AOE_DATA_NUM |
1023H |
|
AIOM_AOE_DATA_TSF |
1027H |
|
AIOM_AOE_SCERR |
1025H |
|
AIOM_AOE_DAERR |
1026H |
・デバイスID (m.WParamプロパティ/wParam引数)
同一PC上で複数デバイスを利用している場合、イベントメッセージルーチン内でデバイスIDを判別することで、イベントを発生させたデバイスが特定してください。
単一デバイスのみを利用している場合は、イベントメッセージルーチン内でデバイスIDを判別する必要はありません。
[メッセージ番号]と[イベントごとの固有パラメータ]とで、イベントメッセージルーチン内の処理を行うことができます。
・イベントごとの固有パラメータ (m.LParamプロパティ/lParam引数)
イベント要因 |
パラメータ |
DA変換開始条件成立イベント |
なし |
リピート終了イベント |
現在のリピート回数 |
デバイス動作終了イベント |
現在のジェネレーティング回数 |
指定ジェネレーティング回数出力イベント |
現在のジェネレーティング回数 |
指定転送数毎イベント |
現在の転送回数 |
ジェネレーティングクロック周期エラーイベント |
現在のジェネレーティング回数 |
DA変換エラーイベント |
現在のジェネレーティング回数 |
イベントメッセージルーチン処理の記述方法は、利用している開発言語によって異なります。
以下に、イベントメッセージルーチンをオーバーライドする方法と、引数の概略を示します。
詳細は、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:イベントごとに固有のパラメータが渡されます。