AioSetAiEvent


機能

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

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

イベント要因

デバイスバッファ使用時

ユーザーバッファ使用時

マクロ

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

リファレンスクロック同期エラーイベント

AIE_REFERENCE_CLOCK_ERROR

00080000H

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

戻り値

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

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

初期値

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

説明

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

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

マクロ

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

リファレンスクロック同期エラーイベント

AIOM_AIE_REFERENCE_CLOCK_ERROR

1008H

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

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

使用例

デバイス動作終了イベント、指定サンプリング回数格納イベントを設定します。

VB.NET

WndProc使用

Dim Ret As Integer
Ret = AioSetAiEvent ( Id , Handle , AIE_END Or AIE_DATA_NUM)
 

C, C++

long Ret;
Ret = AioSetAiEvent ( Id , m_hWnd , AIE_END | AIE_DATA_NUM );
 

C#

WndProc使用

int Ret;
Ret = aio.SetAiEvent ( Id , Handle , (int)(CaioConst.AIE_END | CaioConst.AIE_DATA_NUM) );
 

Python

Ret = ctypes.c_long()
handle = ctypes.windll.user32.FindWindowW(0, "割り込み")
Ret.value = caio.AioSetAiEvent ( Id , m_hWnd , caio.AIE_END | caio.AIE_DATA_NUM )
 

関連項目

AioGetAiEvent AioSetAiEventSamplingTimes AioGetAiEventSamplingTimes


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

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

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

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

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

マクロ

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

リファレンスクロック同期エラーイベント

AIOM_AIE_REFERENCE_CLOCK_ERROR

1008H

 

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