Visual Basic .NET


Visual Basic.NET(以下、VB.NETと呼びます) の機能としてイベントメッセージルーチンを使用する方法です。

WndProcを使用する場合、アプリケーションに関する全てのイベントが発生するたびに
イベントメッセージルーチンが呼ばれます。

イベントメッセージルーチンの作成

VB.NETでWndProcを用いる場合、コードの自動生成機能がありませんので、
イベントメッセージルーチンに関わる部分は手動で記述してください。

以下の手順で関数を作成してください。

  1. 関数の宣言
    System.Windows.Forms 名前空間のクラス内の構造体Messageを用いると、システムからアプリケーションやコントロールに送られるメッセージに関する情報を取得できます。

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

  2. 処理の記述
    例:停止した軸を動作停止イベントにて出力する場合

    If m.Msg = CSMC_MESSAGE Then
        szMsg = "AxisNo" + m.LParam.ToString + " was stop."
        MessageBox.Show(szMsg, "Stop", MessageBoxButtons.OK)
    End If

  3. ベースクラスのWndProc処理
    WndProc関数を使用した後はこの処理を行います。

    MyBase.WndProc(m)

  4. 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 )
Ret = SmcWCountEvent( Id , 1 , Handle, 1 , 0 , 500 )
Ret = SmcWBankEvent( Id , 1 , Handle, 1, 3 )
Ret = SmcWCountEvent( Id , 1 , Handle, 1 , 0 )