DioDmSetCountEvent


機能

指定個数転送完了のメッセージを通知するように設定します。

書式

Ret = DioDmSetCountEvent ( Id , Direction , Count , hWnd )

引数

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

Direction [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
転送方向を設定してください。

定義

[Dec]

意味

DIODM_DIR_IN

1

入力

DIODM_DIR_OUT

2

出力

Count [ VB.NET: Integer ] [ C, C++: unsigned long ] [ C#: uint ] [ Python: ctypes.c_ulong ]
データ転送個数を何個毎にメッセージを通知するかを設定してください。

デバイス名称

設定可能範囲

DIO-32DM3-PE

3 ≦Count ≦536,870,912(20000000H)

PIO-32DM(PCI)
DIO-32DM-PE
DIO-32DM2-PE

1 ≦Count≦16,777,215(FFFFFFH)

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_SYS_NOT_SUPPORTED

20001

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

DIO_ERR_SYS_IODIRECTION

20500

入出力方向が設定範囲外です。

DIO_ERR_SYS_COUNT

21010

データ転送個数が設定範囲外です。

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

初期値

なし

説明

この関数を使用すると、サンプリング/ジェネレーティングの途中にコールバック関数で指定個数の転送完了を通知させることができます。
入出力の周期に対して、Countで指定する個数が小さすぎた場合、速度的に速すぎてメッセージを通知できない場合があります。また、割り込みが頻繁に発生することによって、転送エラーの原因になることがあります。

hWndにウインドウハンドルを指定した場合、サンプリング/ジェネレーティングが完了した時点で、指定したウィンドウハンドルに、DIO_DMM_COUNT = 1360HのメッセージがPostMessageされます。

メッセージのパラメータである、wParam、lParamには、それぞれ以下の情報が入ります。

LOWORD(wParam)=DioInit関数で取得したID
LOWORD(lParam)=転送方向 DIODM_DIR_IN もしくは、DIODM_DIR_OUT

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

使用例

入力転送指定個数転送完了のメッセージを通知を設定します。データ転送個数は10000回です。

VB.NET

Dim Ret As Integer
Ret = DioDmSetCountEvent ( Id , DIODM_DIR_IN , 10000 , Handle )
 

C, C++

long Ret;
Ret = DioDmSetCountEvent ( Id , DIODM_DIR_IN , 10000 , m_hWnd );
 

C#

int Ret;
Ret = dio.DmSetCountEvent ( Id , (short)CdioConst.DIODM_DIR_IN , 10000 , Handle );
 

Python

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

関連項目

DioDmTransferStart DioSetCountCallBackProc