AioSetAoEvent


機能

アナログ出力に関する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はビット単位で以下のような意味を持ち、これらを組み合わせて指定可能です。

デバイスバッファ使用時とユーザーバッファ使用時で使用可能なイベント要因が異なります。

イベント要因

デバイスバッファ使用時

ユーザーバッファ使用時

マクロ

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

AOE_START

00000002H

リピート終了イベント

AOE_RPTEND

00000010H

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

AOE_END

00000020H

指定ジェネレーティング回数出力イベント

×

AOE_DATA_NUM

00000080H

指定転送数毎イベント

×

AOE_DATA_TSF

00000100H

ジェネレーティングクロック周期エラーイベント

AOE_SCERR

00020000H

DA変換エラーイベント

AOE_DAERR

00040000H

指定ジェネレーティング回数出力イベントを使用する場合、AioSetAoEventSamplingTimes関数でイベントを発生させるジェネレーティング回数を設定してください。指定転送数毎イベントを使用する場合、AioSetAoEventTransferTimes関数でイベントを発生させる転送回数を設定してください。

戻り値

Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]

戻り値

内容

0

正常終了

7

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

10001

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

10002

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

20001

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

20002

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

20003

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

初期値

全てのデバイスでAoEvent = 0(イベント未使用)

説明

この関数で設定されたイベント要因は、イベントメッセージルーチンにメッセージとして通知されます。
メッセージの種類は次の通りです。

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

マクロ

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

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

DA変換エラーイベント

AIOM_AOE_DAERR

1026H

アナログ出力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。
コールバックルーチン(AioSetAoCallBackProc)との併用はできません。

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

使用例

デバイス動作終了イベント、指定ジェネレーティング回数格納イベントを設定します。

VB.NET

WndProc使用

Dim Ret As Integer
Ret = AioSetAoEvent ( Id , Handle , AOE_END Or AOE_DATA_NUM)
 

C, C++

long Ret;
Ret = AioSetAoEvent ( Id , m_hWnd , AOE_END | AOE_DATA_NUM );
 

C#

WndProc使用

int Ret;
Ret = aio.SetAoEvent ( Id , Handle , (int)(CaioConst.AOE_END | CaioConst.AOE_DATA_NUM) );
 

Python

Ret = ctypes.c_long()
handle = ctypes.windll.user32.FindWindowW(0, "割り込み")
Ret.value = caio.AioSetAoEvent ( Id , handle , caio.AOE_END | caio.AOE_DATA_NUM )
 

関連項目

AioGetAoEvent AioSetAoEventSamplingTimes AioGetAoEventSamplingTimes


イベントメッセージルーチン

AioSetAoEvent関数で設定したイベント要因が発生すると、イベントメッセージルーチンが呼び出されます。

イベントメッセージルーチンで渡される引数には、3つ重要な値があります。[メッセージ番号]、[デバイスID]、[イベントごとの固有パラメータ]
各引数の詳細は、以下の通りです。

・メッセージ番号 (m.Msgプロパティ/message引数)

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

マクロ

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

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

DA変換エラーイベント

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:
イベントごとに固有のパラメータが渡されます。