Ver código fonte

增加致命故障处理

zx 4 anos atrás
pai
commit
3f071c0741
1 arquivos alterados com 35 adições e 1 exclusões
  1. 35 1
      exception/exception_solver.cpp

+ 35 - 1
exception/exception_solver.cpp

@@ -125,6 +125,13 @@ Error_manager Exception_solver::waitfor_manual_operate_msg(Process_task* task,me
      */
 Error_manager Exception_solver::solve_exception(Error_manager code,Process_task* task)
 {
+    //致命故障,系统急停,取消当前流程.
+    if(code.get_error_level()==CRITICAL_ERROR)
+    {
+        Command_manager::get_instance_pointer()->pause_system();
+        task->Cancel();
+        return SUCCESS;
+    }
 
     Error_manager code_operate;
 
@@ -133,9 +140,33 @@ Error_manager Exception_solver::solve_exception(Error_manager code,Process_task*
         switch (task->current_step_statu())
         {
             case message::eAlloc_step :
+            {
+
+                switch(code.get_error_code())
+                {
+                    case 0:
+                        //重新执行
+                        return code;
+                    case 1:
+                        //异常无法处理,回退
+                        task->next_step();
+                        return code;
+                    case 2:
+                        //.....handle
+                        //异常已经处理,且恢复
+                        return SUCCESS;
+                    case 3:
+                        task->Cancel();
+                        return code;
+                }
+                return SUCCESS;
+            }
             case message::eMeasure_step :
             case message::eCompare_step :
             case message::eDispatch_step :
+            {
+
+            }
             case message::eConfirm_step :
             case message::eComplete :
             case message::eBackConfirm_step :
@@ -184,6 +215,9 @@ Error_manager Exception_solver::solve_exception(Error_manager code,Process_task*
         {
             case message::eSearch_step :
             case message::eDispatch_step :
+            {
+
+            }
             case message::eWait_step :
             case message::eRelease_step :
             case message::eComplete :
@@ -194,7 +228,7 @@ Error_manager Exception_solver::solve_exception(Error_manager code,Process_task*
             case message::eBackComplete :
             {
                 Command_manager::get_instance_pointer()->pause_export(task->terminal_id(),true);
-                LOG(ERROR)<<"关闭出口:"<<task->terminal_id()<<"   四级故障  !!!!!!  等待手动操作 ...";
+                LOG(ERROR)<<"关闭出口:"<<task->terminal_id()<<"   故障  !!!!!!  等待手动操作 ...";
                 message::Process_manual_operation_msg operate_msg;
                 code_operate=waitfor_manual_operate_msg(task,operate_msg);
                 if(code_operate!=SUCCESS)