Example #1
0
        /// <summary>
        /// 执行获取指令
        /// </summary>
        private static void ExecuteGet(NTP ntp)
        {
            NTP request = null;

            switch (ntp.PState)
            {
            case NTPState.Successed:
            case NTPState.Failed:
                break;

            case NTPState.Normal:
                switch (ntp.Command)
                {
                case CommandType.MachineTypeResponose:                  //控制器类型
                    if (CheckIsValidType(ntp))
                    {
                        logger.Debug("machine type matched!");
                        CurrentExecuteState = ExecuteState.GetState;
                        request             = NTPBuildRequest.GetConfirmRequest(true);
                        SendCommand(request);
                    }
                    else
                    {
                        CurrentExecuteState = ExecuteState.Untreated;
                        CurrentFinishState  = FinishState.Failed;
                        logger.Error("machine type unmatched!");
                    }
                    break;

                case CommandType.Patrol:                            //巡检
                    break;

                case CommandType.Ready:                             //准备发送
                    logger.Debug("ready!");
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.DeviceUp:                          //器件设置
                    logger.Debug("device up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.StandardUp:                        //标准组态
                    logger.Debug("Standard up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.MixedUp:                           //混合组态
                    logger.Debug("Mixed up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.GeneralUp:                         //通用组态
                    logger.Debug("General up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.ManualUp:                          //手控盘
                    logger.Debug("Manual up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.Over:                              //发送完毕
                case CommandType.Over8003:
                    logger.Debug("Get over!");
                    CurrentExecuteState = ExecuteState.Untreated;
                    CurrentFinishState  = FinishState.Succeessed;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;
                }
                break;
            }
        }
Example #2
0
        /// <summary>
        /// 执行设置指令
        /// </summary>
        private static void ExecuteSet(NTP ntp)
        {
            switch (ntp.PState)
            {
            case NTPState.Successed:
                switch (CurrentExecuteState)
                {
                case ExecuteState.SetState:                                         //移除已经发送的指令 等待巡检 发送 发送完毕
                    CurrentExecuteState = ExecuteState.SetOver;
                    break;

                case ExecuteState.SetOver:                                          //等待巡检 发送下一条指令
                    if (CurrentNTPList != null && CurrentNTPList.Count > 0)
                    {
                        CurrentNTPList.RemoveAt(0);
                    }
                    if (CurrentNTPList != null && CurrentNTPList.Count > 0)
                    {
                        CurrentExecuteState = ExecuteState.SetState;
                    }
                    else
                    {
                        CurrentFinishState  = FinishState.Succeessed;
                        CurrentExecuteState = ExecuteState.Untreated;
                    }
                    break;
                }
                break;

            case NTPState.Failed:
                if (ErrorMaxCount <= 0)             //暂未使用
                {
                    CurrentExecuteState = ExecuteState.Untreated;
                    CurrentFinishState  = FinishState.Failed;
                    logger.Error("控制器验证错误数量太多!");
                }
                break;

            case NTPState.Normal:
                switch (ntp.Command)
                {
                case CommandType.MachineTypeResponose:              //控制器类型
                    if (CheckIsValidType(ntp))
                    {
                        logger.Debug("machine type matched!");
                        CurrentExecuteState = ExecuteState.SetState;
                        NTP request = NTPBuildRequest.GetConfirmRequest(true);
                        SendCommand(request);
                    }
                    else
                    {
                        CurrentExecuteState = ExecuteState.Untreated;
                        CurrentFinishState  = FinishState.Failed;
                        logger.Error("machine type unmatched!");
                    }
                    break;

                case CommandType.Patrol:                            //巡检
                    ExecuteStep();
                    break;
                }
                break;
            }
        }