Visual C# の機能としてイベントメッセージルーチンを使用する方法です。
WndProcを使用する場合、アプリケーションに関する全てのイベントが発生するたびにイベントメッセージルーチンが呼ばれます。
イベントメッセージルーチンの作成
C#でWndProcを用いる場合、コードの自動生成機能がありませんので、
イベントメッセージルーチンに関わる部分は手動で記述してください。
以下の手順で関数を作成してください。
関数の宣言
System.Windows.Forms 名前空間のクラス内の構造体Messageを用いると、システムからアプリケーションやコントロールに送られるメッセージに関する情報を取得できます。
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
Name="FullTrust")]
protected override void WndProc (ref Message m)
処理の記述
例:停止した軸を動作停止イベントにて出力する場合
if ( m.Msg == (short)CSmcConst.CSMC_MESSAGE
)
{
szText = string.Format("AxisNo {0:d} was
stop.", m.LParam );
MessageBox.Show(szText, "Stop Event",
MessageBoxButtons.OK);
}
ベースクラスのWndProc処理
WndProc関数を使用した後はこの処理を行います。
base.WndProc(ref m);
1~3を合わせると、イベントメッセージルーチンは以下のような形になります。
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
ame="FullTrust")]
protected override void WndProc(ref Message m)
if ( m.Msg == (short)CSmcConst.CSMC_MESSAGE
)
{
szText = string.Format("AxisNo
{0:d} was stop.", m.LParam );
MessageBox.Show(szText,
"Stop Event", MessageBoxButtons.OK);
}
base.WndProc(ref m);
}
ウィンドウハンドルの指定
イベントを使用するためには、アプリケーションのウィンドウハンドルをデバイスドライバに設定する必要があります。
イベントの設定には以下の関数を使用します。
モータ動作停止イベント |
Smc.WStopEvent |
カウント一致イベント |
Smc.WCountEvent |
バンク完了イベント |
Smc.WBankEvent |
拡張イベント |
Smc.WIrqEvent |
これらのイベント設定関数で、パラメータhWndにウィンドウハンドルを指定します。
Visual C# では.NET Frameworkクラス内のメンバ変数Handleがウィンドウハンドルを所持しています。このメンバ変数をそのまま指定してください。
Ret = Smc.WStopEvent( Id , 1 , Handle, 1 ); |
Ret = Smc.WCountEvent(
Id , 1 , Handle, 1 , 0
, 500 ); |