Visual Basic.NET(以下、VB.NETと呼びます) の機能としてイベントメッセージルーチンを使用する方法です。
WndProcを使用する場合、アプリケーションに関する全てのイベントが発生するたびに
イベントメッセージルーチンが呼ばれます。
イベントメッセージルーチンの作成
VB.NETでWndProcを用いる場合、コードの自動生成機能がありませんので、
イベントメッセージルーチンに関わる部分は手動で記述してください。
以下の手順で関数を作成してください。
関数の宣言
System.Windows.Forms 名前空間のクラス内の構造体Messageを用いると、システムからアプリケーションやコントロールに送られるメッセージに関する情報を取得できます。
Protected Overrides Sub WndProc(ByRef
m As System.Windows.Forms.Message)
処理の記述
例:停止した軸を動作停止イベントにて出力する場合
If m.Msg = CSMC_MESSAGE Then
szMsg = "AxisNo" + m.LParam.ToString
+ " was stop."
MessageBox.Show(szMsg, "Stop", MessageBoxButtons.OK)
End If
ベースクラスのWndProc処理
WndProc関数を使用した後はこの処理を行います。
MyBase.WndProc(m)
1~3を合わせると、イベントメッセージルーチンは以下のような形になります。
Protected Overrides Sub WndProc(ByRef
m As System.Windows.Forms.Message)
Dim szMsg As String
Dim Title As String
If m.Msg = CSMC_MESSAGE Then
szMsg = "AxisNo"
+ m.LParam.ToString + " was stop."
MessageBox.Show(szMsg,
"Stop", MessageBoxButtons.OK)
End If
MyBase.WndProc(m)
End Sub
ウィンドウハンドルの指定
イベントを使用するためには、アプリケーションのウィンドウハンドルをデバイスドライバに設定する必要があります。
イベントの設定には以下の関数を使用します。
モータ動作停止イベント |
SmcWStopEvent |
カウント一致イベント |
SmcWCountEvent |
バンク完了イベント |
SmcWBankEvent |
拡張イベント |
SmcWIrqEvent |
これらのイベント設定関数で、パラメータhWndにウィンドウハンドルを指定します。
Visual Basic.NETでは.NET Frameworkクラスライブラリクラス内のメンバ変数Handleがウィンドウハンドルを所持していますので、このメンバ変数をそのまま指定してください。
Ret = SmcWStopEvent(
Id , 1 , Handle, 1 ) |
|