/// <summary> /// AGV后退 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AgvBackwardBtn_Click(object sender, EventArgs e) { if (agvList.FocusedItem == null) { MessageBox.Show("请选中需要操作的车辆", "提示"); return; } else { if (!AgvForwardBtn.Enabled) { StopAGV(); } if (WcfMainHelper.SendOrder(agvList.FocusedItem.Text, new FControlOrder("后退", 1, 2))) { //记录agv状态 agvStatus[agvList.FocusedItem.Text] = "backmove"; AgvBackwardBtn.Enabled = false; } else { MessageBox.Show("请尝试再操作一次", "提示"); } } }
/// <summary> /// 清除站点 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AgvClearSiteBtn_Click(object sender, EventArgs e) { if (agvList.FocusedItem == null) { MessageBox.Show("请选中需要操作的车辆", "提示"); return; } else { WcfMainHelper.SendOrder(agvList.FocusedItem.Text, new FControlOrder("清除站点", 3, 0)); } }
/// <summary> /// 停止函数 /// </summary> public void StopAGV() { //WcfMainHelper.InitPara(_severIp, "", ""); // 1是快速停止、0是慢速 if (WcfMainHelper.SendOrder(agvList.FocusedItem.Text, new FControlOrder("停止", 2, 0))) { AgvForwardBtn.Enabled = true; AgvBackwardBtn.Enabled = true; } else { MessageBox.Show("请尝试再操作一次", "提示"); } }
/// <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> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonSendRun_Click(object sender, EventArgs e) { WcfMainHelper.InitPara(_severIp, "", ""); List <DeviceBackImf> devs = WcfMainHelper.GetDevList(); SensorBackImf sens = null; if (devs != null && devs.Count > 0) { foreach (var item in devs) { if (item.DevType == "AGV") { sens = item.SensorList.Find(c => { return(c.SenId == string.Format("{0}0002", item.DevId)); }); if (sens != null && sens.RValue == LocSite.ToString()) { if (MessageBox.Show(string.Format("确定要启动【{0}】地标上AGV【{1}】", LocSite, item.DevId), "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { if (WcfMainHelper.SendOrder(item.DevId, new CommonDeviceOrderObj("定点启动" + LocSite, 1))) { SetOutputMsg(string.Format("启动【{0}】地标上AGV【{1}】", LocSite, item.DevId)); MessageBox.Show("启动成功!", "提示"); } else { MessageBox.Show("请尝试再操作一次", "提示"); } } return; } } } } else { SetOutputMsg(string.Format("未获取到服务端的AGV")); } SetOutputMsg(string.Format("地标【{0}】上未找到AGV", LocSite)); MessageBox.Show(string.Format("地标【{0}】上未找到AGV", LocSite), "提示"); }
/// <summary> /// 给棍台发送相应动作 /// </summary> /// <param name="oper"></param> /// <param name="para"></param> /// <returns></returns> public bool SendOrdr(EnumType oper, EnumPara para) { return(WcfMainHelper.SendOrder(_id, new FControlOrder("远程", 1, (int)oper, (int)para))); }