Example #1
0
        private static void RunSynProgram()
        {
            try
            {
                do
                {
                    switch (Globals.AppFunState)
                    {
                    case SysFunState.Load:
                    {
                        Globals.Load = SystemLoad();
                        if (Globals.Load)
                        {
                            if (Globals.AutoInit)
                            {
                                Globals.AppFunState = SysFunState.SysInit;        //判断是否直接进行系统初始化操作
                            }
                            else
                            {
                                Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                            }
                        }
                        else
                        {
                            Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                        }
                    }
                    break;

                    case SysFunState.SysInit:    //系统初始化
                    {
                        Globals.IsInit      = SystemInit();
                        Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                    }
                    break;

                    case SysFunState.TouchTesting:    //测高
                    {
                        if (Globals.IsInit)
                        {
                            ReportWorkingProgress(ProcessCmd.CsTestingStartCmd);
                            if (TouchTestingHeight())
                            {
                                ReportWorkingProgress(ProcessCmd.CsTestingEndCmd);
                            }
                            else
                            {
                                ReportWorkingProgress(ProcessCmd.CsTestingErrCmd);
                            }
                            Globals.Testing = false;
                            Z_Axis.AxisGoHomeWork(true);        //恢复系统默认回零模式
                            X_Axis.AxisJogAbsWork(X_Axis.Param.StartPos);
                            Y_Axis.AxisJogAbsWork(Y_Axis.Param.StartPos);
                            WaitAxisMoveDone();
                        }
                        else
                        {
                            ReportCmdKeyProgress(CmdKey.H0000);
                        }
                        Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                        Globals.LedCmd.Cmd  = Globals.DevData.IdleLedCmd.Cmd;
                    }
                    break;

                    case SysFunState.NoTouchTesting: //测高
                    {
                        if (Globals.Paused)          //如果当前在暂停中进行非接触式测高
                        {
                            Globals.AppFunState = SysFunState.Cutting;
                            Globals.Paused      = false;
                        }
                        else
                        {
                            Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                        }
                    }
                    break;

                    case SysFunState.Cutting:
                    {
                        if (Globals.Load && Globals.IsInit)
                        {
                            Globals.CutStop = false;
                            if (Globals.Cutting)
                            {
                                ReportCmdKeyProgress(CmdKey.P0101);
                                ReportWorkingProgress(ProcessCmd.CutContinuesCmd);
                            }
                            else
                            {
                                ReportCmdKeyProgress(CmdKey.P0100);
                                ReportWorkingProgress(ProcessCmd.CutStartCmd);
                            }
                            Globals.Cutting = true;
                            if (RunGroupCut(Globals.Group))
                            {
                                Globals.AppFunState = SysFunState.CutStop;        //空闲操作
                            }
                            else
                            {
                                if (Globals.CutStop)        //停止划切
                                {
                                    Globals.AppFunState = SysFunState.CutStop;
                                    break;
                                }
                                if (Globals.Line.Pause)        //暂停
                                {
                                    Globals.Paused      = true;
                                    Globals.AppFunState = SysFunState.CutPause;
                                    Globals.LedCmd.Cmd  = Globals.DevData.PauseLedCmd.Cmd;
                                    if (Globals.DevData.CutPauseCloseWater)        //关闭切割水
                                    {
                                        Common.DO[DoDefine.CUT_WATER] = false;
                                    }
                                    break;
                                }
                            }
                        }
                        else
                        {
                            Common.ReportCmdKeyProgress(CmdKey.S0090);
                            Globals.AppFunState = SysFunState.CutStop;        //空闲操作
                        }
                    }
                    break;

                    case SysFunState.Emergency:    //紧急停止
                    {
                        //if (Globals.Cutting)
                        //{
                        //    ReportWorkingProgress(ProcessCmd.CutSopCmd);//划切终止
                        //}
                        if (EmergencyStop())
                        {
                            Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                        }
                        else
                        {
                            ReportCmdKeyProgress(CmdKey.S0097);
                            Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                        }
                    }
                    break;

                    case SysFunState.CutStop:
                    {
                        ReportWorkingProgress(ProcessCmd.CutSopCmd);
                        Globals.Group.AddBladeCutedPieces();        //添加已划切片数
                        Globals.Group.ClearAllChannelInfo();        //清除对准信息
                        Globals.Cutting    = false;
                        Globals.Paused     = false;
                        Globals.CutStop    = false;
                        Globals.LedCmd.Cmd = Globals.DevData.StopLedCmd.Cmd;
                        if (Globals.DevData.CutStopCloseWater)        //关闭切割水
                        {
                            Common.DO[DoDefine.CUT_WATER] = false;
                        }
                        if (Globals.DevData.CutStopUnloadVacuum)        //打开真空开关
                        {
                            Common.DO[DoDefine.WORK_AIR] = false;
                        }
                        if (Globals.DevData.BuzzerUsed)        //打开蜂鸣器
                        {
                            DO[DoDefine.BUZZER] = true;
                        }
                        if (Globals.Group.Complate)                                              //正常切割完成
                        {
                            Globals.BldData.SaveBladeDataFile(Globals.AppCfg.BladeFileFullName); //保存当前文档
                            ReportCmdKeyProgress(CmdKey.P0103);
                        }
                        else
                        {
                            ReportCmdKeyProgress(CmdKey.P0104);
                        }
                        Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                    }
                    break;

                    case SysFunState.AutoFocus:
                    {
                        if (Globals.Load && Globals.IsInit)
                        {
                            AutoFocus(Capture, 40, 32);
                        }
                        Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                    }
                    break;

                    case SysFunState.HomeAutoFocus:
                    {
                        if (Globals.Load && Globals.IsInit)
                        {
                            Z_Axis.AxisGoHomeWork(true);
                            AutoFocus(Capture, 40, 32);
                        }
                        Globals.AppFunState = SysFunState.IDIE;        //空闲操作
                    }
                    break;

                    case SysFunState.CutPause:
                    {
                        //崩边检测
                        //继续划切
                        //if()  退出划切
                        if (Globals.CutStop)
                        {
                            Globals.AppFunState = SysFunState.CutStop;        //空闲操作
                        }
                        else
                        {
                            if (!Globals.Paused)                           //暂停取消
                            {
                                Globals.AppFunState = SysFunState.Cutting; //继续划切
                            }
                        }
                    }
                    break;

                    default:    // SyStatus.IDIE: 其他操作
                    {
                        //操作
                    }
                    break;
                    }
                    if (Globals.EMG)                                 //如果需要紧急停止
                    {
                        Globals.AppFunState = SysFunState.Emergency; //空闲操作
                    }
                    else
                    {
                        if (Globals.Load)
                        {
                            SystemCheckStatus();
                        }
                    }
                    Thread.Sleep(100);
                } while (!backWorker.CancellationPending);
            }
            catch (Exception ex)
            {
                LogHelper.WriteDebugException(ex);
                if (Globals.Load)
                {
                    Globals.EMG         = true;
                    Globals.AppFunState = SysFunState.Emergency;
                    backWorker.RunWorkerAsync();
                }
            }
        }
Example #2
0
 private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
 {
     MessageBox.Show(e.Exception.ToString(), "捕获程序异常");
     LogHelper.WriteDebugException(e.Exception);
 }