/// <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; } }
/// <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; } }