Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
 public void AddLog(string log)
 {
     ShowLogEvent?.Invoke(log);
 }