public void Start() { if (token != null && !token.IsCancellationRequested) { token.Cancel(); } token = new CancellationTokenSource(); var startState = new AgvMissionServiceState { State = AgvMissionServiceStateEnum.INFO, Message = "小车管理服务启动", ErrorCode = AgvMissionServiceErrorCodeEnum.NORMAL }; ShowLogEvent?.Invoke(startState.ToString()); while (!token.IsCancellationRequested) { missionContext.Init(); foreach (var item in missionStates) { if (item.CanRequest()) { ShowLogEvent?.Invoke($"【Time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】{item.Condition()}"); item.Handle(); } } missionContext.PushTask(); Thread.Sleep(1000); } }
public AgvMissionManagerClient(IControlDevice _carryDevice) { missionContext = new MissionContext(_carryDevice); missionContext.SendAgvMissionServiceStateMessageEvent += (obj) => ShowLogEvent?.Invoke(obj); missionContext.SendSignalrEvent += (action, obj) => SendSignalrEvent?.Invoke(action, obj); missionContext.SendAgvMissonEvent += (s) => SendAgvMissonEvent?.Invoke(s); InitMissionState(); }
public void AgvStateChange(string s) { try { var data = s.Split('_'); var obj = missionContext.MissionOutNodes.LastOrDefault(d => d.Id == $"{data[0]}_{data[1]}"); if (obj != null) { obj.Process = (AgvMissonProcessEnum)Enum.Parse(typeof(AgvMissonProcessEnum), data[2]); SendAgvMissonEvent?.Invoke(obj); } var objIn = missionContext.MissionInNodes.LastOrDefault(d => d.Id == $"{data[0]}_{data[1]}"); if (objIn != null) { objIn.Process = (AgvMissonProcessEnum)Enum.Parse(typeof(AgvMissonProcessEnum), data[2]); SendAgvMissonEvent?.Invoke(obj); } } catch (Exception ex) { ShowLogEvent?.Invoke("AgvStateChange Error:" + ex.Message); } }
public void AddLog(string log) { ShowLogEvent?.Invoke(log); }