/// <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)); } } } }
/// <summary> /// 呼叫AGV /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonCallAGv_Click(object sender, EventArgs e) { try { if (_isCalling) { MessageBox.Show("AGV过来的途中,请等待!", "提示"); return; } TaskDispatch task = new TaskDispatch(); task.Descip = _clientMark; StationMember sta = _staDic.Values.ToList().Find(c => { return(c.StaSite == LocSite); }); if (sta == null) { MessageBox.Show("未找到与本客户端绑定的站点", "提示"); return; } TaskPathNode node = new TaskPathNode(sta.StaSite.ToString(), sta.StaTarget, true); task.TaskPathNode.Add(node); if (sta != null && sta.WaitList != null) { foreach (var item in sta.WaitList) { task.StartSiteList.Add(item.ToString()); } } if (task.StartSiteList == null || task.StartSiteList.Count < 1) { MessageBox.Show("未正确配置其相应的待命点,请检查配置!", "提示"); return; } if (MessageBox.Show(string.Format("确定要呼叫AGV到【{0}】位置", sta.StaTarget), "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { WcfDispatchHelper.InitPara(_severIp, "", ""); string result = WcfDispatchHelper.IStartTaskDispatch(task); SetOutputMsg(string.Format("开启新任务")); if (result != "s") { SetOutputMsg(result); MessageBox.Show("当前没有空闲的AGV,请稍后再试!", "提示"); } else { _isCalling = true; _callingTask = task; DispatchBackMember disback = WcfMainHelper.GetDispatch(task.DisGuid); if (disback != null) { _callingAGV = disback.DisDevId; DeviceBackImf devback = WcfMainHelper.GetDev(_callingAGV); if (devback != null) { _callingSite = devback.SensorList.Find(c => { return(c.SenId == string.Format("{0}0002", devback.DevId)); }).RValue; } else { _callingSite = null; } } else { _callingAGV = null; } MessageBox.Show("呼叫成功,请等待AGV过来!", "提示"); } } } catch { } }