Exemplo n.º 1
0
        /// <summary>
        /// 检测调度状态
        /// </summary>
        private void CheckDispatch()
        {
            WcfMainHelper.InitPara(_severIp, "", "");

            List <DispatchBackMember> result = WcfMainHelper.GetDispatchList();

            if (result != null)
            {
                foreach (var item in result)
                {
                    if (item.TaskImf == _clientMark && item.OrderStatue == ResultTypeEnum.Suc)
                    {
                        WcfMainHelper.CtrDispatch(item.DisGuid, DisOrderCtrTypeEnum.Stop);
                    }
                }

                if (_callingTask != null)
                {
                    if (result.Find(c => { return(c.DisGuid == _callingTask.DisGuid); }) == null)
                    {
                        _callingTask = null;
                    }
                }
            }

            if (_callingTask == null)
            {
                _isCalling = false;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 发生故障、离线的车,清除其相应的任务
        /// </summary>
        public void ClearTask()
        {
            while (true)
            {
                Thread.Sleep(5000);
                List <F_AGV>            agvs         = F_DataCenter.MDev.ErrorOrFalse();
                List <FDispatchBackImf> dispatchList = WcfMainHelper.GetDispatchList();
                if (dispatchList != null && agvs != null && dispatchList.Count > 0)
                {
                    foreach (var agv in agvs)
                    {
                        foreach (var dispatch in dispatchList)
                        {
                            // 有故障的车是否对应任务的设备ID
                            if (agv.Id == dispatch.Dev)
                            {
                                if (dic.ContainsKey(agv.Id))
                                {
                                    int count = 0;
                                    dic.TryGetValue(agv.Id, out count);
                                    if (count >= 10)
                                    {
                                        // 终止该任务
                                        WcfMainHelper.CtrDispatch(dispatch.Id, EnumCtrType.Stop);
                                        sendServerLog("终止异常的 " + agv.Id + "正在执行的任务");

                                        //LogFactory.LogRunning("终止异常的 " + agv.Id + "正在执行的任务");
                                        FLog.Log("终止异常的 " + agv.Id + "正在执行的任务");

                                        count = 0;

                                        //异常终止的任务释放AGV
                                        F_AGV.AgvRelease(agv.Id);
                                    }
                                    else
                                    {
                                        count++;
                                        sendServerLog("异常的 " + agv.Id + "已等待处理 " + count + " 次");

                                        //LogFactory.LogRunning("异常的 " + agv.Id + "已等待处理 " + count + " 次");
                                        FLog.Log("异常的 " + agv.Id + "已等待处理 " + count + " 次");
                                    }
                                    dic.Remove(agv.Id);
                                    dic.Add(agv.Id, count);
                                }
                                else
                                {
                                    dic.Add(agv.Id, 0);
                                }
                            }
                        }
                    }
                }
                else
                {
                    dic.Clear();
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 返回区域二附近的待命点
        /// </summary>
        private void BackToPointAround()
        {
            if (_devArea2 == null)
            {
                return;
            }

            if (_devTarWait == null)
            {
                WcfMainHelper.InitPara(_severIp, "", "");

                List <DispatchBackMember> diss = WcfMainHelper.GetDispatchList();

                List <DeviceBackImf> devs = WcfMainHelper.GetDevList();

                foreach (var item in _waitAreaTwoList)
                {
                    if ((!IsDispatchContainPath(diss, item.StaTarget)) && (!IsDevOnSite(devs, item.StaSite)))
                    {
                        _devTarWait = item;

                        break;
                    }
                }
            }

            if (_devTarWait != null)
            {
                WcfMainHelper.InitPara(_severIp, "", "");

                DeviceBackImf result = WcfMainHelper.GetDev(_devArea2.DevId);

                if (result != null)
                {
                    if (result.SensorList.Find(c => { return(c.SenId == string.Format("{0}0003", _devArea2.DevId)); }).RValue == _devTarWait.StaTarget.ToString())
                    {
                        _devTarWait = null;

                        _devArea2 = null;
                    }
                    else
                    {
                        WcfMainHelper.SendOrder(_devArea2.DevId, new CommonDeviceOrderObj(DeviceOrderTypeEnum.OrderIndexThree, _devTarWait.StaTarget));
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 事务线程
        /// </summary>
        private void ThreadFunc()
        {
            List <DeviceBackImf> getList = null;

            List <FDispatchBackImf> dispatchList = null;

            while (true)
            {
                Thread.Sleep(1000);

                try
                {
                    getList = WcfMainHelper.GetDevList();

                    dispatchList = WcfMainHelper.GetDispatchList();

                    if (getList != null)
                    {
                        lock (_ans)
                        {
                            _devList.Clear();

                            _devList.AddRange(getList);

                            //AGVDataMaster.UpdateAgvs(_devList);
                        }
                        MapItemMaster.UpdateItems(_devList);
                        MapDevMsgMaster.UpdateDevInfo(_devList);
                    }

                    if (dispatchList != null)
                    {
                        lock (_ansDis)
                        {
                            _dispatchList.Clear();

                            _dispatchList.AddRange(dispatchList);
                        }
                    }
                }
                catch { }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 事务线程
        /// </summary>
        private void ThreadFunc()
        {
            List <DeviceBackImf> getList = null;

            List <FDispatchBackImf> dispatchList = null;

            while (true)
            {
                Thread.Sleep(500);

                try
                {
                    getList = WcfMainHelper.GetDevList();

                    dispatchList = WcfMainHelper.GetDispatchList();

                    if (getList != null)
                    {
                        lock (_ans)
                        {
                            _devList.Clear();

                            _devList.AddRange(getList);
                        }
                    }

                    if (dispatchList != null)
                    {
                        lock (_ansDis)
                        {
                            _dispatchList.Clear();

                            _dispatchList.AddRange(dispatchList);
                        }
                    }
                }
                catch { }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ClientForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            WcfMainHelper.InitPara(_severIp, "", "");

            List <DispatchBackMember> result = WcfMainHelper.GetDispatchList();

            if (result != null)
            {
                _isCalling = false;

                foreach (var item in result)
                {
                    if (item.TaskImf == _clientMark)
                    {
                        MessageBox.Show("当前还有任务未完成,不允许关闭客户端!", "提示");

                        e.Cancel = true;

                        return;
                    }
                }
            }

            if (_devArea2 != null || _isCalling)
            {
                MessageBox.Show("当前还有任务未完成,不允许关闭客户端!", "提示");

                e.Cancel = true;

                return;
            }


            if (MessageBox.Show("确定关闭客户端?", "提示", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes)
            {
                e.Cancel = true;
            }
        }
Exemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAlter_Click(object sender, EventArgs e)
        {
            if (_isLogin)
            {
                #region
                if (buttonAlter.Text != "保  存")
                {
                    WcfMainHelper.InitPara(_severIp, "", "");

                    List <DispatchBackMember> result = WcfMainHelper.GetDispatchList();

                    if (_devArea2 != null)
                    {
                        MessageBox.Show("当前客户端目前有派发任务未完成,不允许修改!", "提示");

                        return;
                    }

                    if (result != null)
                    {
                        foreach (var item in result)
                        {
                            if (item.TaskImf == _clientMark)
                            {
                                MessageBox.Show("当前客户端目前有派发任务未完成,不允许修改!", "提示");

                                return;
                            }
                        }
                    }

                    buttonAlter.Text = "保  存";

                    textBoxCurTar.ReadOnly = false;
                }
                else
                {
                    if (Int32.TryParse(textBoxCurTar.Text, out _locTar))
                    {
                        buttonAlter.Text = "修 改";

                        textBoxCurTar.ReadOnly = true;

                        string Section = "CientConfig";

                        string key = "LoctionSite";

                        ConfigHelper.IniWriteValue(Section, key, _locTar.ToString());

                        InitPara();

                        MessageBox.Show("修改成功!", "提示");
                    }
                    else
                    {
                        MessageBox.Show("输入站点格式有误!", "提示");
                    }
                }
                #endregion
            }
            else
            {
                MessageBox.Show("请先登录后再操作!", "提示");
            }
        }