public override EVO_ScriptStatus GetScriptStatus() { if (iScriptID != -1) { SC_ScriptStatus status = m_evoSys.GetScriptStatus(iScriptID); int status_num = (int)status; return((EVO_ScriptStatus)status_num); } else { return(EVO_ScriptStatus.NONE); } }
public void RunScript(RobotJob Job) { int ScriptID; Job.WriteParameterFile(); Logon(); try { try { ScriptID = Evo.PrepareScript(Job.ScriptFilePath); } catch (System.Runtime.InteropServices.COMException e) { if (e.Message.Contains("Previous script could not be unloaded")) { ScriptID = Evo.PrepareScript(Job.ScriptFilePath); } else { throw e; } } Evo.StartScript(ScriptID, 0, 0); //myLogger.Add("After OctoTip.Manager.RobotWrapper.StartScript"); Job.JobStatus = RobotJob.Status.Running; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); } catch (Exception e) { Job.JobStatus = RobotJob.Status.Failed; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); Logoff(); throw e; } //Loop while the robot is preforming the job try { SC_ScriptStatus ScriptStatusEx = Evo.GetScriptStatusEx(ScriptID); SC_ScriptStatus ScriptStatus = Evo.GetScriptStatus(ScriptID); string Title = "ScriptStatusEx:" + ScriptStatusEx.ToString() + "ScriptStatus:" + ScriptStatus.ToString(); Log.LogEntery(new LoggingEntery("OctoTipPlus Appilcation", "RobotWrapper", Title, LoggingEntery.EnteryTypes.Debug)); while (ScriptStatus == SC_ScriptStatus.SS_BUSY && !_ShouldStop) { System.Threading.Thread.Sleep(RobotSamplingRate); // Handeling pause request if (_ShouldPause) { Evo.Pause(); Job.JobStatus = RobotJob.Status.Paused; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); while (_ShouldPause) { System.Threading.Thread.Sleep(RobotSamplingRate); } if (!_ShouldStop) { Evo.Resume(); Job.JobStatus = RobotJob.Status.Running; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); } } //Chack for runtime error and wait if (Evo.GetScriptStatusEx(ScriptID) == SC_ScriptStatus.SS_ERROR) { Job.JobStatus = RobotJob.Status.RuntimeError; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); while (Evo.GetScriptStatusEx(ScriptID) == SC_ScriptStatus.SS_ERROR && !_ShouldStop) { System.Threading.Thread.Sleep(RobotSamplingRate); } if (!_ShouldStop) { Job.JobStatus = RobotJob.Status.Running; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); } } ScriptStatus = Evo.GetScriptStatus(ScriptID); } //or ended of _souldStop or if (_ShouldStop) { Evo.Stop(); Job.JobStatus = RobotJob.Status.TerminatedByUser; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); } else { ScriptStatusEx = Evo.GetScriptStatusEx(ScriptID); Log.LogEntery(new LoggingEntery("OctoTipPlus Appilcation", "RobotWrapper", "ScriptStatusEx:" + ScriptStatusEx.ToString(), LoggingEntery.EnteryTypes.Debug)); // determain script termination status switch (ScriptStatusEx) { case SC_ScriptStatus.SS_IDLE: Job.JobStatus = RobotJob.Status.Finished; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); break; case SC_ScriptStatus.SS_STOPPED: Job.JobStatus = RobotJob.Status.TerminatedByUser; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); break; case SC_ScriptStatus.SS_ABORTED: Job.JobStatus = RobotJob.Status.TerminatedByUser; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); break; case SC_ScriptStatus.SS_STATUS_ERROR: Job.JobStatus = RobotJob.Status.Failed; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); break; } } } catch (Exception e) { Job.JobStatus = RobotJob.Status.Failed; OnRobotJobStatusChanged(new RobotJobStatusChangedEventArgs(Job)); throw e; } finally { Logoff(); } }