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 类)
← Spel 类方法 SPELVideo 控制 →