カウント一致による通知の指定と比較レジスタの設定を行ないます。マルチプロセス対応関数です。
Ret = CntNotifyCountUp ( Id , ChNo , RegNo , Count , hWnd )
Id
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
CntInitで取得したデバイスIDを指定します。
ChNo
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
設定するチャネル番号を指定します。
RegNo
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
比較レジスタのレジスタ番号を指定します。
指定可能範囲:
サンプリング機能搭載デバイスの場合 : 0 or 1
サンプリング機能搭載デバイス以外 : 0 固定
Count
[ VB.NET: Integer ] [ C, C++: unsigned long ] [ C#: uint ] [ Python: ctypes.c_ulong
]
比較レジスタに設定する比較値を指定してください。
指定可能範囲:
24ビットカウンタデバイスの場合 : 0H <= Count <= FFFFFFH
32ビットカウンタデバイスの場合 : 0H <= Count <=
FFFFFFFFH
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 ]
定義 |
値 |
意味 |
CNT_ERR_SUCCESS |
0 |
正常終了 |
CNT_ERR_SYS_RECOVERED_FROM_STANDBY |
7 |
スタンバイモードから復帰したため、CntResetDevice関数を実行してください |
CNT_ERR_DLL_INVALID_ID |
10001 |
無効なIDが指定されました |
CNT_ERR_DLL_CALL_DRIVER |
10002 |
ドライバーを呼び出せません。(デバイスI/Oコントロールに失敗) |
CNT_ERR_DLL_CREATE_THREAD |
10005 |
スレッドの作成に失敗しました(CreateThread失敗) |
CNT_ERR_DLL_HWND |
10200 |
ウィンドウハンドルが指定可能範囲外です |
CNT_ERR_SYS_NOT_SUPPORTED |
20001 |
このデバイスではこの関数は使用できません |
CNT_ERR_SYS_BOARD_EXECUTING |
20002 |
デバイスが動作中のため実行できません |
CNT_ERR_SYS_USING_OTHER_PROCESS |
20003 |
他のプロセスがデバイスを使用しているため、実行できません |
CNT_ERR_SYS_CH_VALUE |
20203 |
カウンタ値が設定可能範囲外です |
CNT_ERR_SYS_CH_NO |
20201 |
チャネル番号が設定可能範囲外です |
CNT_ERR_SYS_REGNO |
20204 |
比較レジスタ番号が設定可能範囲外です |
その他のエラー(参照:エラーコード詳細)
比較レジスタの初期値は0です。
・この関数は、カウンタデバイスの機能であるカウント値比較による割り込みの設定と、比較レジスタの設定を行ないます。
比較レジスタを設定することにより、設定した比較値とカウント値が一致した時に、メッセージ通知を行なうことができます。
また、CntSetPulseWidth関数で指定した長さのパルス(ワンショットパルス)が外部に出力されます。
ワンショットパルス出力のみを行い、アプリケーションでカウント一致を検出する必要がない場合、引数のhWndに0を指定してください。
・CntResetDeviceを呼び出すと、割り込みが無効になります。
・利用デバイスによって、イベントを受け付けることができるプロセス数が異なります。
詳細は、利用可能プロセス数の一覧表を参照ください。
・割り込みが発生すると、指定したウィンドウハンドルに、以下のメッセージがPostMessageされます。
定義 |
値 |
意味 |
CNTM_COUNTUP_CH0 |
1100H |
カウント一致、チャネル番号0 |
CNTM_COUNTUP_CH1 |
1101H |
" 1 |
CNTM_COUNTUP_CH2 |
1102H |
" 2 |
CNTM_COUNTUP_CH3 |
1103H |
" 3 |
CNTM_COUNTUP_CH4 |
1104H |
" 4 |
CNTM_COUNTUP_CH5 |
1105H |
" 5 |
CNTM_COUNTUP_CH6 |
1106H |
" 6 |
CNTM_COUNTUP_CH7 |
1107H |
" 7 |
メッセージのパラメータである、wParam、lParamには、それぞれ以下の情報が入ります。
※HIWORD、LOWORDは、それぞれ上位ワード、下位ワードを表します。
定義 |
意味 |
LOWORD(wParam) |
CntInit関数で取得したID |
HIWORD(wParam) |
方向 |
lParam |
比較値 |
【方向定義】
定義 |
値 |
意味 |
CNTM_DIR_UP |
1 |
UP |
CNTM_DIR_DOWN |
2 |
DOWN |
メッセージ処理の記述方法詳細については、各言語のサンプルプログラムを参照してください。
CPSN-CNT-3201I
を CPSN-MCB271-xxx と組み合わせて使用する場合
この関数を使用することで、ワンショットパルスを出力するカウントの比較値を設定できます。
ただし、アプリケーションへのイベント通知を行うことはできません。
hWndには0を指定してください。
Ethernetデバイスの場合
デバイスとの通信が途切れるとプロセスの登録が解除され、イベントが通知されなくなります。
イベント通知を再び行う場合、本関数で再度設定を行ってしてください。
現在のプロセスの登録状況は、CntGetNetCommunicationInfo関数で確認できます。
チャネル0について、比較レジスタ値10000でカウント一致通知設定を行います。
VB.NET |
Dim Ret As Integer |
C, C++ |
long Ret; |
C# |
int Ret; |
Python |
Ret = ctypes.c_long() |
CntStopNotifyCountUp CntSetPulseWidth CntSetOutputHardwareEvent CntGetNetCommunicationInfo