Beispiel #1
0
        private void AgvMissionSrv_AgvOutMissChangeEvent(AgvOutMisson mission, bool arg2)
        {
            if (arg2)
            {
                OutMissionItemAddEvent?.Invoke(OutMissions, new OutMissionItem
                {
                    Id             = mission.Id,
                    ClientId       = mission.ClientId,
                    Type           = mission.Type,
                    Process        = mission.Process,
                    CarryProcess   = mission.CarryProcess,
                    CreateDateTime = mission.CreateDateTime,
                });
                return;
            }

            var item = OutMissions.Where(x => x.Id == mission.Id && x.Process != AgvOutMissonProcessEnum.CLOSE).FirstOrDefault();

            if (item != null)
            {
                item.Process        = mission.Process;
                item.CarryProcess   = mission.CarryProcess;
                item.CreateDateTime = mission.CreateDateTime;
            }
        }
Beispiel #2
0
        private async void SendOutMission(AgvOutMisson mission)
        {
            SendStationClientStateMessage(
                new StationClientState {
                State = StationClientStateEnum.INFO, Message = "出库请求:" + mission.Type.EnumToString(), CreateDateTime = DateTime.Now
            });

            await signalrService.Send(AgvSendActionEnum.SendOutMission.EnumToString(), mission);
        }
Beispiel #3
0
        private void OnAgvOutMissonEvent(AgvOutMisson mission)
        {
            //毛坯输入
            if (mission.Id.Equals(Station_Id + "_RAWIN"))
            {
                if (mission.Process > AgvOutMissonProcessEnum.AGVPLACEDANDLEAVE && mission.Process != AgvOutMissonProcessEnum.CANCEL & mission.Process != AgvOutMissonProcessEnum.CANCELED)
                {
                    bool raw_in     = false;
                    var  ret_raw_in = StationDevice.GetRawInRequireState(ref raw_in);
                    if (ret_raw_in == true && raw_in == true)
                    {
                        StationDevice.SetRawInFin(true);

                        bool raw_in_confirm = true;

                        while (raw_in_confirm)
                        {
                            ret_raw_in = StationDevice.GetRawInRequireState(ref raw_in_confirm);
                            if (ret_raw_in == true && raw_in_confirm == false)
                            {
                                StationDevice.SetRawInFin(false);
                            }
                        }
                    }
                }
            }
            //成品空箱输入
            if (mission.Id.Equals(Station_Id + "_EMPTYIN"))
            {
                if (mission.Process == AgvOutMissonProcessEnum.FINISHED)
                {
                    bool empty_in     = false;
                    var  ret_empty_in = StationDevice.GetEmptyInState(ref empty_in);
                    if (ret_empty_in == true && empty_in == true)
                    {
                        StationDevice.SetEmptyInFin(true);

                        bool empty_in_confirm = true;

                        while (empty_in_confirm)
                        {
                            ret_empty_in = StationDevice.GetEmptyInState(ref empty_in_confirm);
                            if (ret_empty_in == true && empty_in_confirm == false)
                            {
                                StationDevice.SetEmptyInFin(false);
                            }
                        }
                    }
                }
            }
        }
Beispiel #4
0
        public AgvOutMisson SendMissonOutOrder(AgvOutMisson message)
        {
            var hubContext2 = GlobalHost.ConnectionManager.GetHubContext <NoticeHub>();

            try
            {
                var    client = new Client(StaticData.AppHostConfig.AgvServiceUrl);
                string id     = $"{message.Id}_{ message.TimeId}";
                StaticData.OrderName.Add(id);

                client.TransportOrders2(id, message.AgvMissonToTransportOrder());


                hubContext2.Clients.All.queryOrder(id);
                return(message);
            }
            catch (Exception ex)
            {
                hubContext2.Clients.All.pushSystemMessage($"AGV调度服务连接失败,异常信息:{ex.Message}", new { state = false });

                return(message);
            }
        }
Beispiel #5
0
 public static TransportOrder AgvMissonToTransportOrder(this AgvOutMisson agvInMisson, string name = "")
 {
     return(GetOrder(agvInMisson.Id, name));
 }
Beispiel #6
0
 public void SendOutMission(AgvOutMisson message)
 {
     Clients.All.receiveOutMissionMessage(message);
 }