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クラス)