DioNotifyInterrupt


機能

割り込みイベント要因を設定します。

書式

Ret = DioNotifyInterrupt ( Id , BitNo , Logic , hWnd )

引数

Id [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
DioInitで取得したデバイスIDを指定します。

BitNo [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
入力論理ビット番号を指定します。このビット番号は、ハードウェア上で割り込みとして使用可能なビットでなければなりません。

Logic [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
割り込み論理を以下の定義値の何れかで指定します。

定義

[Dec]

意味

DIO_INT_NONE

0

割り込みをマスクする

DIO_INT_RISE

1

入力値0->1

DIO_INT_FALL

2

入力値1->0

hWnd [ VB.NET: IntPtr ] [ C, C++: HWND ] [ C#: IntPtr ] [ Python: ctypes.wintypes.HANDLE ]
トリガメッセージを受け取るウィンドウハンドルを指定します。ウィンドウハンドルは、VCの場合は、m_hWndで取得できます。
ウインドウメッセージを使用せず、コールバックを使用されたい場合は0を指定してください。

戻り値

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

定義

[Dec]

意味

DIO_ERR_SUCCESS

0

正常終了

DIO_ERR_SYS_RECOVERED_FROM_STANDBY

7

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

DIO_ERR_DLL_INVALID_ID

10001

無効なIDが指定されました。

DIO_ERR_DLL_CALL_DRIVER

10002

ドライバーを呼び出せません(デバイスI/Oコントロールに失敗)。

DIO_ERR_DLL_CREATE_THREAD

10005

スレッドの作成に失敗しました(CreateThread失敗)。

DIO_ERR_DLL_HWND

10200

ウィンドウハンドルが指定可能範囲外です。

DIO_ERR_SYS_NOT_SUPPORTED

20001

このデバイスではこの関数は使用できません。

DIO_ERR_SYS_USING_OTHER_PROCESS

20003

他のプロセスがデバイスを使用しているため、実行できません。

DIO_ERR_SYS_BIT_NO

20102

ビット番号が指定可能範囲を超えています。

DIO_ERR_SYS_INT_BIT

20200

割り込みビットが指定可能範囲外です。

DIO_ERR_SYS_INT_LOGIC

20201

割り込み論理が指定可能範囲外です。

その他のエラー(参照:エラーコード詳細

初期値

割り込みはマスクされています。

説明

割り込みイベントを開始/停止する場合に指定します。
割り込みとは入力ビットの立ち上がりもしくは立下りをハードウェアで検出して通知する機能を示します。

割り込みとして使用可能な入力ビットの位置と数は、デバイスによって異なります。
詳細は、各デバイスのハードウェア仕様をご覧ください。
また、割り込み論理は立ち上がりもしくは立下りのどちらか一方になります。

ソフトウェアのパラメータであるDIO_INT_RISE、DIO_INT_FALLは、それぞれ入力値の0→1、入力値の1->0を表します。
電圧レベルからみた場合、ボードが正論理であるか負論理であるかによって、立ち上がり、立下りが異なりますので、ご注意ください。

割り込みが発生すると、指定したウィンドウハンドルに、DIOM_INTERRUPT=1300HのメッセージがPostMessageされます。
メッセージのパラメータである、wParam、lParamには、それぞれ以下の情報が入ります。

LOWORD(wParam) = DioInit関数で取得したID
LOWORD(lParam)  = 割り込みビット番号
HIWORD(lParam)   = 立ち上がり:1、立ち下がり:2
※HIWORD、LOWORDは、それぞれ上位ワード、下位ワードを表します。

USBデバイスの場合、割り込みイベントを受け付けることができるのは1プロセスのみです。
同一のデバイスから複数プロセスに対してメッセージを送出することはできません。
なお、この機能を使用するためには、ハードウェアが割り込みをサポートしている必要があります。

メッセージ処理の記述方法詳細については、各言語のサンプルプログラムを参照してください。
複数のビットの割り込みを有効にするには、この関数を各ビットに対して呼び出してください。

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

     現在のプロセスの登録状況は、DioGetNetCommunicationInfo関数で確認できます。

使用例

論理ビット0の0->1変化を監視します。

VB.NET

Dim Ret As Integer
Ret = DioNotifyInterrupt ( Id , 0 , DIO_INT_RISE , Handle )
 

C, C++

long Ret;
Ret = DioNotifyInterrupt ( Id , 0 , DIO_INT_RISE , m_hWnd );
 

C#

int Ret;
Ret = dio.NotifyInterrupt ( Id , 0 , (short)CdioConst.DIO_INT_RISE , Handle );
 

Python

Ret = ctypes.c_long()
handle = ctypes.windll.user32.FindWindowW(0, "割り込み")
Ret.value = cdio.DioNotifyInterrupt ( Id , 0 , cdio.DIO_INT_RISE , handle )
 

関連項目

DioGetNetCommunicationInfo