SPELクラスイベント
EventReceived イベント, SPELクラス
解説
Epson RC+ 8.0が、システムイベントを送るとき、またはSPELCom_Eventステートメントを使って、SPEL+で実行中のプログラムがイベントを送るときに発生します。
書式
EventReceived (ByVal sender As Object, ByVal e As RCAPINet.SpelEventArgs)
パラメーター
- e.Event
指定するユーザー定義イベントを表す番号 - e.Message
イベントメッセージを表す文字列
コメント
Epson RC+が発生するシステムイベントがいくつかあり、下表で説明します。
システムイベント
デフォルトでは使用不可のイベントを使用したい場合は、始めにEnableEventメソッドでイベントを有効にしてください。
イベント番号 | イベントメッセージ | 定数 | 説明 |
---|---|---|---|
1 | "PAUSE" | SpelEvents.Pause | タスクが一時停止している デフォルトでは有効です |
2 | "SAFE GUARD OPEN" | SpelEvents.SafeGuardOpen | 安全扉が開いている デフォルトでは有効です |
3 | "SAFE GUARD CLOSE" | SpelEvents.SafeGuardClose | 安全扉が閉じている デフォルトでは有効です |
4 | Project build status text | SpelEvents.ProjectBuildStatus | 各ビルド状態のメッセージはBuildProjectメソッド中に送られます。 必要に応じて、CRLFsを追加 メッセージはProject Build Status ウィンドウに表示されるものと同じものです このイベントは必ずEnableEventメソッドで有効にしてください デフォルトでは無効です |
5 | "Error xxx!: mmm in task at line yyy" | SpelEvents.Error | 処理できないエラーにより、タスクが中断されたとき、またはシステムエラーが発生した デフォルトでは有効です |
6 | Text from print statement | SpelEvents.Print | SPEL+タスクからPrintステートメントを実行する デフォルトでは無効です |
7 | "ESTOP ON" | SpelEvents.EStopOn | 非常停止の状態がオンに変わった デフォルトでは有効です |
8 | "ESTOP OFF" | SpelEvents.EStopOff | 非常停止の状態がオフに変わった デフォルトでは有効です |
9 | "CONT" | SpelEvents.Continue | Contが実行された後 デフォルトでは有効です |
10 | <Robot #>,"MOTOR ON" | SpelEvents.MotorOn | 指示されたロボットのモーターがオンになった デフォルトでは無効です |
11 | <Robot #>,"MOTOR OFF" | SpelEvents.MotorOff | 指示されたロボットのモーターがオフになった デフォルトでは無効です |
12 | <Robot #>,"POWER HIGH" | SpelEvents.PowerHigh | 指示されたロボットのパワーがHIGHになった デフォルトでは無効です |
13 | <Robot #>,"POWER LOW" | SpelEvents.PowerLow | 指示されたロボットのパワーがLOWになった デフォルトでは無効です |
14 | "TEACH MODE" | SpelEvents.TeachMode | ティーチモードがアクティブになった デフォルトでは有効です |
15 | "AUTO MODE" | SpelEvents.AutoMode | オートモードがアクティブになった デフォルトでは有効です |
16 | "<TaskID>,<Status>,<FuncName>" Status: "RUN", "HALT", "PAUSE", "FINISHED", "ABORTED" | SpelEvents.TaskState | タスクのステータスが変わった デフォルトでは無効です |
17 | "SHUTDOWN" | SpelEvents.Shutdown | RC+がシャットダウンしている デフォルトでは無効です |
18 | "ALL TASKS STOPPED" | SpelEvents.AllTasksStopped | すべてのタスクが停止している デフォルトでは無効です |
19 | "DISCONNECTED" | SpelEvents.Disconnected | PCのコントローラー通信が切断された 有効にした場合、RC+は通信切断を示すメッセージを表示しません。 デフォルトでは無効です |
20 | “MOTION STARTED” | SpelEvents.MotionStarted | 制御コマンドを開始した 有効にした場合、以下のSpelクラスメソッド実行時に表示します。 Arc・Arc3・BGo・BMove・CVMove・Go・Home・JTran・Jump・Jump3・Jump3CP・MCal・Move・Pass・PTran・Pulse・TGo・TMove デフォルトは、無効です |
21 | “MOTION COMPLETE” | SpelEvents.MotionComplete | 制御コマンドが完了した 有効にした場合、以下のSpelクラスメソッド実行完了後に表示します。 Arc・Arc3・BGo・BMove・CVMove・Go・Home・JTran・Jump・Jump3・Jump3CP・MCal・Move・Pass・PTran・Pulse・TGo・TMove デフォルトは、無効です |
ユーザーイベント
SPEL+プログラムから“SPELCom_Event”コマンドを使用し、Visual Basicアプリケーションにイベントを送ることができます。
Spelcom_Event 3000, cycNum, lotNum, cycTime
このコマンドを実行すると、Visual Basicアプリケーションの“EventReceived”ルーチンが呼び出されます。“SPELCom_Event”の詳細については、Epson RC+ 8.0オンラインヘルプまたは、SPEL+ランゲージリファレンスを参照してください。
使用例
VB 例:
Sub m_spel_EventReceived ( _
ByVal sender As Object, _
ByVal e As RCAPINet.SpelEventArgs) _
Handles m_spel.EventReceived
Redim tokens(0) As String
Select Case e.Event
Case 3000
tokens = e.Message.Split(New [Char]() {" "c}, _
System.StringSplitOptions.RemoveEmptyEntries)
lblCycCount.Text = tokens(0)
lblLotNumber.Text = tokens(1)
lblCycTime.Text = tokens(2)
End Select
End Sub
C# 例:
public void m_spel_EventReceived(object sender, SpelEventArgs e)
{
string[] tokens = new string[3];
switch ((int) e.Event){
case 3000:
tokens = e.Message.Split(' ');
lblCycCount.Text = tokens(0);
lblLotNumber.Text = tokens(1);
lblCycTime.Text = tokens(2);
break;
default:
break;
}
}
イベント処理
Spelクラス インスタンスから“EventReceived”が呼び出された場合、Epson RC+ 8.0プロセスサーバーは イベント処理ルーチンが終了するまで待機します。そのため、ルーチンを出来るだけ早く終了させるために、“EventReceived”ルーチンの中からRC+APIコマンドを実行したり、長時間にわたる処理を実行しないでください。発生したイベントにもとづいてコマンドを実行したい場合は、“EventReceived”イベント処理内にフラグをセットし、イベント処理外のアプリケーションのメインループからフラグを処理してください。
例えば、Visual Basic メインフォームの“Load”プロシージャーに、SPEL+からイベントを受信するイベントループを作成します。“spel_EventReceived”ルーチンに、どのイベントを受けたかを表わす“グローバルフラグ”を設定すると、“Load”プロシージャーに作成されたイベントループから、実際のイベント処理を実行させることが出来ます。
イベントメッセージを表示する方法
フォームにTextBoxコントロールを追加します。イベントを受け取るたびに、TextBoxコントロールのTextプロパティーにイベントメッセージを表示できます。
VB 例:
Private Sub m_spel_EventReceived(ByVal sender As Object, _
ByVal e As SpelEventArgs) Handles m_spel.EventReceived
txtEvents.AppendText(e.Event & ": " & e.Message & vbCrLf)
End Sub
C# 例:
private void m_spel_EventReceived(object sender, SpelEventArgs e)
{
txtEvents.AppendText(e.Event + ": " + e.Message);
}
参照
EnableEvent(Spelクラス)