Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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();
            }
        }