Spel 类事件

EventReceived事件、SPEL类

描述
当 Epson RC+ 8.0 发送系统事件或当 SPEL+ 中运行的程序使用 SPELCom_Event 语句发送事件时发生。

语法
EventReceived (ByVal sender As Object, ByVal e As RCAPINet.SpelEventArgs)

参数

  • e.Event
    表示特定用户定义事件的编号。
  • e.Message
    含有事件消息的字符串。

备注
Epson RC+ 8.0 会发出多个系统事件。如下表所述。

系统事件
一些事件默认为禁用。若要使用这些事件,应先通过 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 方法期间发送。

根据需要添加 CRLF。

这些消息与Epson RC+ 8.0 GUI中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

紧急停止条件改为 ON 时发生。

默认为启用。

8 "ESTOP OFF" SpelEvents.EStopOff

紧急停止条件改为 OFF 时发生。

默认为启用。

9 "CONT" SpelEvents.Continue

执行完 Cont 后发生。

默认为启用。

10 <Robot #>,"MOTOR ON" SpelEvents.MotorOn

所示机器人的电机处于 ON 时发生。

默认为禁用。

11 <Robot #>,"MOTOR OFF" SpelEvents.MotorOff

所示机器人的电机处于 OFF 时发生。

默认为禁用。

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

默认为无效

用户事件
您可以使用“SPELCom_Event”命令将事件从 SPEL+ 程序发送至 Visual Basic 应用。

Spelcom_Event 3000, cycNum, lotNum, cycTime  

该语句执行时,将通过事件编号和消息调用 EventReceived 例程。有关“SPELCom_Event”的详细信息,请参阅 Epson RC+ 8.0 在线帮助或 SPEL+ 语言参考。

Use 示例
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 类)