Пример #1
0
 public void setMessage(AGVMessage message)
 {
     if (this.message.getMessageType() != message.getMessageType())
     {
         this.message_next = message;                  //下一个要处理的message type与当前的message不一样
         AGVLog.WriteInfo("AGVMessageHandler set message " + message.getMessageStr(), new StackFrame(true));
     }
     else
     {
         AGVLog.WriteInfo("AGVMessageHandler set same message " + message.getMessageStr(), new StackFrame(true));
     }
 }
Пример #2
0
        private void handleMessage()
        {
            while (!isStop)
            {
                Thread.Sleep(1000);
                if (message_next.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_MIN)
                {
                    continue;
                }
                message.setMessageStr(message_next.getMessageStr());
                message.setMessageType(message_next.getMessageType());

                message_next.clear();

                startBeep(message.getMessageType());

                if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_LOWPOWER)
                {
                    FormController.getFormController().getMainFrm().setFrmEnable(false);
                    DialogResult dr = MessageBox.Show(message.getMessageStr(), "低电量警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (dr == DialogResult.OK)
                    {
                        FormController.getFormController().getMainFrm().setFrmEnable(true);
                        FormController.getFormController().getMainFrm().setWindowState(FormWindowState.Normal);
                        clearBeep();
                    }
                }
                else if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMEASAGE_LIFT_UPDOWN)
                {
                    bool ddp = ScheduleFactory.getSchedule().getDownDeliverPeriod();
                    if (ddp)
                    {
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_DOWN_WITH_START);                          //如果当前处于上货阶段,楼上楼下都有货,需要暂停楼下的车
                    }
                    else
                    {
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_UP_WITH_START);                         //如果当前处于下货阶段,楼上楼下都有货,需要暂停楼上的车
                    }

                    DialogResult dr = MessageBox.Show(message.getMessageStr(), "升降机提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (dr == DialogResult.OK)
                    {
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_TYPE_MIN);                         //解除楼上或楼下的暂停
                        clearBeep();
                    }
                }
                else if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_LIFT_COM)
                {
                    AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_SYSTEM_WITH_START);
                    FormController.getFormController().getMainFrm().setFrmEnable(false);
                    DialogResult dr = MessageBox.Show(message.getMessageStr(), "升降机错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (dr == DialogResult.OK)
                    {
                        if (ElevatorFactory.getElevator().isNeed())
                        {
                            ElevatorFactory.getElevator().reStart();                             //重新启动升降机 PLC读取线程
                        }
                        FormController.getFormController().getMainFrm().setFrmEnable(true);
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_TYPE_MIN);                         //解除系统暂停
                        clearBeep();
                    }
                }
                else if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_LIFT_BUG)
                {
                    AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_SYSTEM_WITH_START);
                    FormController.getFormController().getMainFrm().setFrmEnable(false);
                    DialogResult dr = MessageBox.Show(message.getMessageStr(), "升降机错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (dr == DialogResult.OK)
                    {
                        //AGVInitialize.getInitialize().getAGVElevatorOperator().reStart(); //重新启动升降机 PLC读取线程
                        FormController.getFormController().getMainFrm().setFrmEnable(true);
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_TYPE_MIN);                         //解除系统暂停
                        clearBeep();
                    }
                }
                else if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_NET_ERR)
                {
                    AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_SYSTEM_WITH_START);
                    DialogResult dr = MessageBox.Show(message.getMessageStr(), "网络异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);                     //网络中断时,系统暂停
                    if (dr == DialogResult.OK)
                    {
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_TYPE_MIN);
                        clearBeep();
                    }
                }
                else if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_SENDPAUSE_ERR)
                {
                    AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_UP_WITHOUT_START);
                    DialogResult dr = MessageBox.Show(message.getMessageStr(), "网络异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (dr == DialogResult.OK)
                    {
                        AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_TYPE_MIN);                         //清除楼上暂停的标志,但是车子暂停不会解除
                        clearBeep();
                    }
                }
                else if (message.getMessageType() == AGVMessageHandler_TYPE_T.AGVMessageHandler_AGV_ALARM)                    //检测到防撞信号,暂停所有AGV
                {
                    AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_SYSTEM_WITH_START);
                    //DialogResult dr = MessageBox.Show(message.getMessageStr(), "防撞提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    //if (dr == DialogResult.OK) {
                    AGVSystem.getSystem().setPause(SHEDULE_PAUSE_TYPE_T.SHEDULE_PAUSE_TYPE_MIN);                             //清除楼上暂停的标志,但是车子暂停不会解除
                    clearBeep();
                    //}
                }
                message.clear();                  //清除消息
            }
        }