DioNotifyTrg


機能

指定した論理ビットのトリガ監視を開始します。

書式

Ret = DioNotifyTrg ( Id , TrgBit , TrgKind , Tim , hWnd )

引数

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

TrgBit [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
トリガ監視を行なう入力論理ビットを指定します。トリガ監視可能な最大論理ビットは255です。

TrgKind [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
指定ビットの監視内容として、立ち上がり、立下り、もしくは両方を論理和で指定します。以下の定義値が有効です。

定義

[Dec]

意味

DIO_TRG_RISE

1

立ち上がり

DIO_TRG_FALL

2

立下り

Tim [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
トリガの監視周期をmsec単位で指定します。トリガの監視周期はデバイス毎の設定となります。
DI-XX(USB), DIO-XX/XX(USB) の設定可能範囲は、1msec~2147483647msecとなります。
その他デバイスは、10msec~2147483647msecとなります。

hWnd [ VB.NET: IntPtr ] [ C, C++: HWND ] [ C#: IntPtr ] [ Python: ctypes.wintypes.HANDLE ]
トリガメッセージを受け取るウィンドウハンドルを指定します。
ウィンドウハンドルは、VCの場合は、m_hWndで取得できます。

戻り値

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_DLL_TRG_KIND

10300

トリガ種類が指定範囲外です。

DIO_ERR_SYS_NOT_SUPPORTED

20001

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

DIO_ERR_SYS_USING_OTHER_PROCESS

20003

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

DIO_ERR_SYS_BIT_NO

20102

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

DIO_ERR_SYS_TIM

20300

タイマ値が指定範囲外です。

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

初期値

トリガ監視機能は無効です。

説明

トリガ監視機能は、デバイスの持っているタイマ、またはWindowsのタイマを使用して、指定したビットの入力値の変化を監視する機能です。
ビットの入力値が0から1、もしくは1から0になったとき、Windowメッセージを通じてアプリケーションにビット変化があったことが通知されます。

USBデバイスの場合、トリガメッセージを受け付けることができるのは1プロセスのみです。
同一のデバイスから複数プロセスに対してメッセージを送出することはできません。

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

LOWORD(wParam)=DioInit関数で取得したID
LOWORD(lParam)=トリガビット番号
HIWORD(lParam)=立ち上がり:1、もしくは立ち下がり:2、両方:3

※HIWORD、LOWORDは、それぞれ上位ワード、下位ワードを表します。
 メッセージ処理の記述方法詳細については、各言語のサンプルプログラムを参照してください。

複数のビットのトリガ監視を有効にするには、この関数を各ビットに対して実行してください。
関数を各ビットに対して実行した場合、トリガ監視周期はデバイスに対して設定した最小値で実行されます。

DIO-CPS-BXC200では、この関数を使用することができません。

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

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

使用例

論理ビット0の立ち下がりを、1000msec間隔で監視します。

VB.NET

Dim Ret As Integer
Ret = DioNotifyTrg ( Id , 0 , DIO_TRG_RISE , 1000 , Handle )
 

C, C++

long Ret;
Ret = DioNotifyTrg ( Id , 0 , DIO_TRG_RISE , 1000 , m_hWnd );
 

C#

int Ret;
Ret = dio.NotifyTrg ( Id , 0 , (short)CdioConst.DIO_TRG_RISE , 1000 , Handle );
 

Python

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

関連項目

DioStopNotifyTrg DioGetNetCommunicationInfo