機能
カウント一致イベントを設定します。
書式
Ret = SmcWCountEvent( Id , AxisNo , hWnd , EventMode , CountType, Count )
引数
Id
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
SmcWInit 関数で取得したデバイスIDを指定します。
AxisNo
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
軸番号を指定します。
hWnd
[ VB.NET: IntPtr ] [ C, C++: HWND ] [ C#: IntPtr ] [ Python: ctypes.wintypes.HANDLE
]
イベントを発行するウィンドウのハンドルを設定してください。
EventMode
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
イベントの有効/無効を設定してください。
0 |
イベントを無効 |
1 |
イベントを有効 |
CountType
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
カウント一致を行うカウンタを設定してください。
0 |
出力パルス数 |
1 |
エンコーダのカウントパルス数 |
Count
[ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long
]
カウント数を設定してください。
利用デバイスによって、設定範囲が異なります。詳細は、デバイス別使用の項目を参照ください。
戻り値
Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
0 |
正常終了 |
0以外 |
異常終了 |
参照:エラーコード詳細
説明
カウンタ値が指定カウント数に達した場合にイベントが発行されます。
イベント発生関数は1度実行すれば、その後要因が発生する度にイベントが発生します。
イベントを停止させる目的以外で、複数回実行する必要はありません。
メッセージ番号は固定です。
出力パルス数カウント一致イベント発生時には、指定したウィンドウハンドルにメッセージ番号「8701H」のメッセージがPostMessageされます。
エンコーダパルス数カウント一致イベント発生時には、指定したウィンドウハンドルにメッセージ番号「8702H」のメッセージがPostMessageされます。
メッセージのパラメータである、wParam、lParamには、それぞれ以下の情報が入ります。
LOWORD(wParam)=SmcWInit関数で取得したID
LOWORD(lParam)=軸番号
※HIWORD、LOWORDは、それぞれ上位ワード、下位ワードを表します。
SmcWSetCtrlTypeOut関数で
CtrlTypeOut1~3の設定に、カウンタカウント一致信号設定がなされている出力信号のみカウント一致の条件成立中に信号を出力させることができます。
・従って、非常に速いパルス出力の場合、レベルの変化が一瞬のため、出力先でデータとして認識できない可能性があります。
・指定パルス数で停止した場合、信号はレベルが変化した状態のままとなります。
・信号幅を指定しての1ショットパルスを出力することはできません。
信号は以下の2種類です。
・出力パルスカウンタカウント一致信号(CP1)
CountTypeに「0 : 出力パルス数」を設定し、かつ出力パルス数カウント一致イベントが有効時。
・エンコーダカウンタカウント一致信号(CP2)
CountTypeに「1 : エンコーダのカウントパルス数」を設定し、かつエンコーダパルス数カウント一致イベントが有効時。
型式 |
パルスコントロールLSIの型式 |
Count設定範囲 |
SMC-4DL-PE |
PCL6145相当 (32ビット) |
-2,147,483,648~+2,147,483,647 |
PCL6143相当 (28ビット) |
-134,217,728 ~+134,217,727 |
|
SMC-4DF2-PCI |
PCL6045BL相当 (28ビット) |
-134,217,728 ~+134,217,727 |
利用デバイスのパルスコントロールLSIは、診断レポートでご確認ください。
使用例
軸番号1に対して出力パルス数500になった場合のカウント一致イベントを設定します。
VB.NET
Dim Ret As Integer
Ret = SmcWCountEvent( Id , 1 , Handle , 1 , 0 , 500 )
C, C++
long Ret;
Ret = SmcWCountEvent( Id , 1 , hWnd , 1 , 0 , 500 );
C#
int Ret;
Ret = Smc.WCountEvent( Id , 1 , hWnd , 1 , 0 , 500 );
Python
Ret = ctypes.c_long()
Ret.value = csmc.SmcWCountEvent( Id , 1 , hWnd , 1 , 0 , 500 )
関連項目