using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Windows.Forms; using Newtonsoft.Json; using EnumType; using IWareDataAccess.EF; using Seagull.BarTender.Print; using System.IO; namespace DeviceWCS { public partial class Form1 : Form { srmSER.SrmService srmOPC = new srmSER.SrmService(); rgvSRM.RgvService rgvOPC = new rgvSRM.RgvService(); tranSRM.SrmTranService tranOPC = new tranSRM.SrmTranService(); srmInfo SrmInfo = new srmInfo(); rgvINFO Rgvinfo = new rgvINFO(); tranInfo TranInfo = new tranInfo(); int srmNO = 1; int rgvNO = 1; int tranNO = 1; //static Engine btEngine = new Engine(); //LabelFormatDocument btFormatEu = btEngine.Documents.Open(Path.Combine(@"F:\", "EUPrint.btw"));//这里是Bartender软件生成的模板文件,你需要先把模板文件做好。 //LabelFormatDocument btFormatIs = btEngine.Documents.Open(Path.Combine(@"F:\", "IsOkPrint.btw"));//这里是Bartender软件生成的模板文件,你需要先把模板文件做好。 public Form1() { InitializeComponent(); this.dGVQuery.AutoGenerateColumns = false; Control.CheckForIllegalCrossThreadCalls = false; Thread thsrm = new Thread(srmInfo); thsrm.Start(); Thread thrgv = new Thread(rgvinfo); thrgv.Start(); Thread thtran = new Thread(traninfo); thtran.Start(); //Thread thprint = new Thread(thprintinfo); // thprint.Start(); } //private void thprintinfo(object obj) //{ // while (true) // { // using (Model md = new Model()) // { // var printinfo = md.BASE_PRINT.OrderBy(x => x.CREATETIME).FirstOrDefault(x=>x.STATE==0); // int type = printinfo.TYPE; // LabelFormatDocument btFormat; // if (type == 1) // { // btFormat = btFormatEu; // } // else // { // btFormat = btFormatIs; // } // btEngine.Start(); // btFormat.PrintSetup.PrinterName = printinfo.PRINTDEVNAME;// "80mmThermalPrinter";//打印机名称 // btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //打印份数 // Messages messages; // int waitout = 1000; // 10秒 超时 // if (type == 1) // { // btFormat.SubStrings["ItemNum"].Value = printinfo.ITEMNUM;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["ItemTypeNum"].Value = printinfo.ITEMTYPENUM;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["CVIQRCode"].Value = printinfo.CVIQRCODE;//为Bartender里的数据源(文本框、条码等等)传值 // } // else // { // btFormat.SubStrings["Num"].Value = printinfo.NUM;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["ItemCode"].Value = printinfo.ITEMCODE;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["ItemName"].Value = printinfo.ITEMNAME;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["ProductLine"].Value = printinfo.BACKUP1;//为Bartender里的数据源(文本框、条码等等)传值 // } // btFormat.SubStrings["CVICode"].Value = printinfo.CVICODE;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["IsOk"].Value = printinfo.ISOK; ;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["CreateTime"].Value = ((DateTime)printinfo.CREATETIME).ToString("yyyy-MM-dd");//为Bartender里的数据源(文本框、条码等等)传值 // Result nResult1 = btFormat.Print("标签打印软件", waitout, out messages); // btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.Daily; // Resolution rl = new Resolution(300, 300); // //string name = DateTime.Now.ToLongDateString(); // // btFormat.ExportImageToFile(@"F:\"+"name.png", ImageType.PNG, ColorDepth.Mono, rl, OverwriteOptions.Overwrite); // btFormat.Close(SaveOptions.DoNotSaveChanges);//不保存对打开模板的修改 // btEngine.Stop(); // if (nResult1.ToString() == "Success" || nResult1.ToString() == "0") // { // printinfo.STATE=1; // } // md.SaveChanges(); // } // Thread.Sleep(1000); // } //} #region 枚举 /// 堆垛机号 /// /// public enum srmid { 一号堆垛机 = 1, 二号堆垛机 = 2, 三号堆垛机 = 3, 四号堆垛机 = 4, 五号堆垛机 = 5, 六号堆垛机 = 6, 七号堆垛机 = 7, 八号堆垛机 = 8, 九号堆垛机 = 9 } /// 堆垛机命令 /// /// public enum command { 搬运 = 1, 单放 = 2, 移动 = 3 } /// 堆垛机模式 /// /// public enum srmMode { 自动模式 = 1, 手动模式 = 2, 半自动模式 = 3, 维修模式 = 4, 关机模式 = 0 } /// 堆垛机状态 /// /// public enum srmState { 空闲 = 0, 取货定位中 = 1, 请求取货 = 2, 取货中 = 3, 取货完成放货定位中 = 4, 请求放货 = 5, 放货中 = 6, 维修 = 98, 报警 = 99 } /// 货叉位置 /// /// public enum liftPosition { 货叉原位 = 0, 货叉在左侧 = 1, 货叉在右侧 = 2 } /// RGVid枚举 /// /// public enum rgvid { 一号RGV = 1, 二号RGV = 2, 三号RGV = 3, 四号RGV = 4 } #endregion /// 自动选择任务号 /// /// /// /// private void comboBox2_SelectionChangeCommitted(object sender, EventArgs e) { int a = (int)Enum.Parse(typeof(srmid), comboBox2.Text); textBox1.Text = (a * 1111).ToString(); } /// 优化显示 /// /// /// /// private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.Text == "单放" || comboBox1.Text == "移动") { textBox2.Enabled = false; //comboBox3.Enabled = false; } else { textBox2.Enabled = true; comboBox3.Enabled = true; } } /// 发送堆垛机任务 /// /// /// /// private void button1_Click(object sender, EventArgs e) { try { if (comboBox1.Text == "搬运") { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); int taskid = int.Parse(textBox1.Text); int pallet = int.Parse(comboBox3.Text.Split('-')[0]); int result = srmOPC.SendSrmTask(id, taskid, textBox2.Text, textBox3.Text, pallet, 1); #region 判断返回值 if (result == 1) { label9.Text = id + "号堆垛机搬运成功发送"; label9.ForeColor = Color.Green; } else if (result == 2) { label9.Text = id + "号堆垛机搬运任务参数错误!!!!!!!!1"; label9.ForeColor = Color.Red; } else { label9.Text = id + "号堆垛机搬运发送失败!!!!!!!!1"; label9.ForeColor = Color.Red; } #endregion } else { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); int taskid = int.Parse(textBox1.Text); int comm = (int)Enum.Parse(typeof(command), comboBox1.Text); int pallet = int.Parse(comboBox3.Text.Split('-')[0]); int result = srmOPC.SendSrmMove(id, taskid, textBox3.Text, comm, pallet, 1); #region 判断返回值 if (result == 1) { label9.Text = id + "号堆垛机单放或移动成功发送"; label9.ForeColor = Color.Green; } else if (result == 2) { label9.Text = id + "号堆垛机单放或移动任务参数错误!!!!!!!!1"; label9.ForeColor = Color.Red; } else { label9.Text = id + "号堆垛机单放或移动任务发送失败!!!!!!!!1"; label9.ForeColor = Color.Red; } #endregion } } catch (Exception) { label9.Text = "堆垛机单放或移动任务发送异常!!!!!!!!1"; label9.ForeColor = Color.Red; } } /// 确认任务 /// /// /// /// private void button2_Click(object sender, EventArgs e) { try { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); int result = srmOPC.SendSrmTaskFinishConfirm(id); if (result == 1) { label9.Text = id + "号堆垛机确认任务发送成功"; label9.ForeColor = Color.Green; } else { label9.Text = id + "号堆垛机确认任务发送失败"; label9.ForeColor = Color.Red; } } catch (Exception) { label9.Text = "堆垛机确认任务发送异常"; label9.ForeColor = Color.Red; } } /// 堆垛机解除报警 /// /// /// /// private void button5_Click(object sender, EventArgs e) { try { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); srmOPC.SrmRlsAlert(id); } catch (Exception) { label9.Text = "堆垛机解除报警发送异常"; label9.ForeColor = Color.Red; } } /// 删除任务 /// /// /// /// private void button4_Click(object sender, EventArgs e) { try { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); int result = srmOPC.SendSrmDelete(id); if (result == 1) { label9.Text = id + "号堆垛机删除任务发送成功"; label9.ForeColor = Color.Green; } else { label9.Text = id + "号堆垛机删除任务发送失败"; label9.ForeColor = Color.Red; } } catch (Exception) { label9.Text = "堆垛机删除任务发送异常"; label9.ForeColor = Color.Red; } MessageBox.Show("已单独删除此堆垛机任务"); } /// 急停任务 /// /// /// /// private void button3_Click(object sender, EventArgs e) { try { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); int result = srmOPC.SendSrmEStop(id); if (result == 1) { label9.Text = id + "号堆垛机急停任务发送成功"; label9.ForeColor = Color.Green; } else { label9.Text = id + "号堆垛机急停任务发送失败"; label9.ForeColor = Color.Red; } } catch (Exception) { label9.Text = "堆垛机急停任务发送异常"; label9.ForeColor = Color.Red; } } /// 读取堆垛机状态 /// /// public void srmInfo() { while (true) { try { Thread.Sleep(1000); // var ff =srmOPC.GetSrmInfo(srmNO); SrmInfo = JsonConvert.DeserializeObject(srmOPC.GetSrmInfo(srmNO)); label10.Text = "心跳:" + SrmInfo.RhandShake; label11.Text = "模式:" + Enum.GetName(typeof(srmMode), SrmInfo.Rmode); label18.Text = "状态:" + Enum.GetName(typeof(srmState), SrmInfo.Rstate); label19.Text = "堆垛机名:" + SrmInfo.SrmName; label17.Text = "系统任务号:" + SrmInfo.RtaskNO + " 设备任务号:" + SrmInfo.RDevicetaskNO; label12.Text = "是否报警:" + (SrmInfo.Ralarm == 1 ? "报警状态" : "状态正常"); label13.Text = "是否有货:" + (SrmInfo.RliftFull == 1 ? "货叉上有货" : "货叉上无货"); label14.Text = "当前列:" + SrmInfo.Rposx + "列"; label15.Text = "当前层:" + SrmInfo.Rposy + "层"; label16.Text = "货叉位置:" + Enum.GetName(typeof(liftPosition), SrmInfo.Rposz); label29.Text = "报警内容:" + Enum.GetName(typeof(ESrmAlarm), SrmInfo.RalarmNumber); label54.Text = "任务是否完成:" + SrmInfo.RtaskFinish; } catch (Exception ex) { label19.Text = "堆垛机名:" + SrmInfo.SrmName + "产生异常" + ex; } } } /// 选择设备 /// /// /// /// private void comboBox4_SelectedIndexChanged(object sender, EventArgs e) { srmNO = (int)Enum.Parse(typeof(srmid), comboBox4.Text); } /// 发送RGV任务 /// /// /// /// private void button6_Click(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); int pallet = int.Parse(comboBox8.Text.Split('-')[0]); int result = rgvOPC.SendRgvTask(rgvID, rgvID * 1111, Convert.ToInt32(textBox5.Text), Convert.ToInt32(textBox6.Text), (comboBox6.Text == "搬运" ? 1 : 2), pallet, 1); if (result == 1) { label1.Text = rgvID + "号RGV任务发送成功"; label1.ForeColor = Color.Green; } else { label1.Text = rgvID + "号RGV任务发送失败"; label1.ForeColor = Color.Red; } } /// 自动设置任务号 /// /// /// /// private void comboBox5_SelectedIndexChanged(object sender, EventArgs e) { int a = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); textBox4.Text = (a * 1111).ToString(); } /// 优化显示 /// /// /// /// private void comboBox6_SelectedIndexChanged(object sender, EventArgs e) { } /// RGV确认任务 /// /// /// /// private void button10_Click(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); bool isok = rgvOPC.SendRgvFinishConfirm(rgvID); if (isok) { label1.Text = rgvID + "号RGV任务确认成功"; label1.ForeColor = Color.Green; } else { label1.Text = rgvID + "号RGV任务确认失败"; label1.ForeColor = Color.Red; } } /// RGV解警 /// /// /// /// private void button8_Click(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); int result = rgvOPC.SendRgvRlsAlert(rgvID); if (result == 1) { label1.Text = rgvID + "号RGV解警成功"; label1.ForeColor = Color.Green; } else { label1.Text = rgvID + "号RGV解警失败"; label1.ForeColor = Color.Red; } } /// 删除RGV任务 /// /// /// /// private void button7_Click(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); int result = rgvOPC.SendRgvDelete(rgvID); if (result == 1) { label1.Text = rgvID + "号RGV删除任务成功"; label1.ForeColor = Color.Green; } else { label1.Text = rgvID + "号RGV删除任务失败"; label1.ForeColor = Color.Red; } } /// 选择RGV信息展示 /// /// /// /// private void comboBox7_SelectedIndexChanged(object sender, EventArgs e) { rgvNO = (int)Enum.Parse(typeof(rgvid), comboBox7.Text); } /// 获取RGV信息 /// /// public void rgvinfo() { while (true) { try { Thread.Sleep(1000); Rgvinfo = JsonConvert.DeserializeObject(rgvOPC.GetRgvInfo(rgvNO)); label33.Text = "RGV名:" + Rgvinfo.RgvName; label34.Text = "心跳:" + Rgvinfo.handShake; label32.Text = "模式:" + (Rgvinfo.onLine == 3 ? "自动" : "非自动"); label25.Text = "状态:" + Rgvinfo.state; label26.Text = "系统任务号:" + Rgvinfo.taskId + " 设备任务号:" + Rgvinfo.deviceTaskId; label31.Text = "是否报警:" + (Rgvinfo.ararm == 1 ? "报警状态" : "状态正常"); label30.Text = "是否有货:" + (Rgvinfo.loaded == 1 ? "RGV有货" : "RGV无货"); label27.Text = "rgv当前位置:" + Rgvinfo.pos; label28.Text = "报警代码:" + Enum.GetName(typeof(ESrgvAlarm), Rgvinfo.alarmCode); label53.Text = "任务是否完成:" + Rgvinfo.taskFinish; label57.Text = "RGV可用:" + Rgvinfo.useful; } catch (Exception) { label33.Text = "RGV名:" + Rgvinfo.RgvName + "异常"; } } } /// 发送输送线任务 /// /// /// /// private void button9_Click(object sender, EventArgs e) { try { int pallet = int.Parse(comboBox9.Text.Split('-')[0]); int result = tranOPC.SendGoodsReady(Convert.ToInt32(textBox9.Text), Convert.ToInt32(textBox8.Text), Convert.ToInt32(textBox7.Text), 1); if (result == 1) { label40.Text = "信息提示:输送线任务发送成功"; label40.ForeColor = Color.Green; } } catch (Exception) { label40.Text = "信息提示:输送线任务发送异常"; label40.ForeColor = Color.Red; } } /// 获取输送线信息 /// /// public void traninfo() { while (true) { try { Thread.Sleep(1000); TranInfo = JsonConvert.DeserializeObject(tranOPC.GetSrmConveyorStationInfo(tranNO)); label49.Text = "输送线编号:" + TranInfo.stationNo; label50.Text = "心跳:" + TranInfo.handShake; label48.Text = "模式:" + (TranInfo.auto == true ? "自动" : "非自动"); label42.Text = "故障:" + TranInfo.err; label43.Text = "系统任务号:" + TranInfo.taskId + " 设备任务号:" + TranInfo.deviceTaskId; label47.Text = "报警号:" + Enum.GetName(typeof(ETranAlarm), TranInfo.errId); label46.Text = "是否有货:" + (TranInfo.goods == true ? "有货" : "无货"); label45.Text = "货物重量:" + TranInfo.weihgt; label44.Text = "外形检测:" + (tranOPC.IsPassed(tranNO) == 0 ? "到位正常" : "不正常"); //label44.Text = "外形检测:" + (TranInfo.shapeCheck == 3 ? "到位正常" : "不正常"); label55.Text = "条码:" + TranInfo.Code; label56.Text = "允许下发任务:" + TranInfo.TaskSendAllow; //获取入口是否有新货(测试) //tranOPC.HasTranGoods(); //tranOPC.ClearTranGoods(61); } catch (Exception) { label33.Text = "RGV名:" + Rgvinfo.RgvName + "异常"; } } } /// 窗口关闭 /// /// /// /// private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Environment.Exit(0); } /// 输送线设备选择 /// /// /// /// private void textBox10_TextChanged(object sender, EventArgs e) { try { tranNO = Convert.ToInt32(textBox10.Text); } catch { } } private void button11_Click(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); int result = rgvOPC.SendRgvStop(rgvID); if (result == 1) { label1.Text = rgvID + "号RGV急停成功"; label1.ForeColor = Color.Green; } else { label1.Text = rgvID + "号RGV急停失败"; label1.ForeColor = Color.Red; } } private void button14_Click(object sender, EventArgs e) { int tranid = int.Parse(textBox10.Text); int result = tranOPC.SendTranReset(tranid); if (result == 1) { label40.Text = tranid + "号输送线解警成功"; label40.ForeColor = Color.Green; } else { label40.Text = tranid + "号输送线解警失败"; label40.ForeColor = Color.Red; } } private void button13_Click(object sender, EventArgs e) { int tranid = int.Parse(textBox10.Text); int result = tranOPC.SendTranDelete(tranid); if (result == 1) { label40.Text = tranid + "号输送线删除成功"; label40.ForeColor = Color.Green; } else { label40.Text = tranid + "号输送线删除失败"; label40.ForeColor = Color.Red; } } private void button12_Click(object sender, EventArgs e) { int tranid = int.Parse(textBox10.Text); int result = tranOPC.SendTranStop(tranid); if (result == 1) { label40.Text = tranid + "号输送线急停成功"; label40.ForeColor = Color.Green; } else { label40.Text = tranid + "号输送线急停失败"; label40.ForeColor = Color.Red; } } private void button15_Click_1(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); bool result = rgvOPC.ChangeUseful(rgvID); if (result) { label1.Text = rgvID + "号RGV切换成功"; label1.ForeColor = Color.Lime; } else { label1.Text = rgvID + "号RGV切换失败"; label1.ForeColor = Color.Red; } } /// /// 删除关联任务 /// /// /// private void button16_Click(object sender, EventArgs e) { //int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); //int result = rgvOPC.SendRgvDeleteAll(rgvID); //if (result == 1) //{ // label1.Text = rgvID + "号RGV删除任务成功"; // label1.ForeColor = Color.Green; //} //else //{ // label1.Text = rgvID + "号RGV删除任务失败"; // label1.ForeColor = Color.Red; //} } private void button17_Click(object sender, EventArgs e) { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); int result = srmOPC.SendSrmDelete(id); if (result == 1) { label9.Text = id + "号堆垛机删除任务成功"; label9.ForeColor = Color.Green; } else { label9.Text = id + "号堆垛机删除任务失败"; label9.ForeColor = Color.Red; } } private void button18_Click(object sender, EventArgs e) { int tranid = int.Parse(textBox10.Text); int result = tranOPC.SendTranDelete(tranid); if (result == 1) { label40.Text = tranid + "号输送线删除任务成功"; label40.ForeColor = Color.Green; } else if (result == 0) { label40.Text = tranid + "号输送线删除任务失败"; label40.ForeColor = Color.Red; } else if (result == 2) { label40.Text = tranid + "号输送线删除任务失败,编号校验失败(可能其它线程访问中),请重发"; label40.ForeColor = Color.Red; } } private void button19_Click(object sender, EventArgs e) { int[] srmid; int[] rgvid; int[] tranid; int dir = 0; string[] place; int mainid = int.Parse(textBox11.Text); string containerName = textBox11.Text.Trim(); if (srmOPC.DeleteMainTask(mainid, out tranid, out rgvid, out srmid, out place, out dir)) //if (srmOPC.DeleteMainTaskByContainerName(containerName, out tranid, out rgvid, out srmid, out place,out dir)) { string text = ""; foreach (var i in place) { text = i + " "; } MessageBox.Show("拿出" + text); } else { MessageBox.Show("删除失败,未修改数据"); } if (!tranOPC.UnlockTran(dir)) { if (dir == 1) { MessageBox.Show("输送线解锁失败,请开至安全位后手动解锁:东"); } else if (dir == 0) { MessageBox.Show("输送线解锁失败,请开至安全位后手动解锁:西"); } } } private void button20_Click(object sender, EventArgs e) { int dir = 2; if (cbDir.Text == "东:冲压") { dir = 1; } else if (cbDir.Text == "西:焊装") { dir = 0; } else { MessageBox.Show("请选择东或者西"); } bool result = tranOPC.UnlockTran(dir); if (result) { MessageBox.Show("解锁成功"); } else { MessageBox.Show("未修改一条数据,请检查RGV是否开至安全位,可能原始数据即可用"); } } private void button21_Click(object sender, EventArgs e) { int dir = 2; if (cbDir.Text == "东:冲压") { dir = 1; } else if (cbDir.Text == "西:焊装") { dir = 0; } else { MessageBox.Show("请选择东或者西"); } bool result = tranOPC.UnFullTran(dir); if (result) { MessageBox.Show("解占用成功"); } else { MessageBox.Show("未修改一条数据,可能原始数据即可用"); } } private void button22_Click(object sender, EventArgs e) { int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text); bool open = srmOPC.UseAutoMove(id); if (open) { button22.Text = "切换优化:开启"; } else { button22.Text = "切换优化:关闭"; } } private void btnSearch_Click(object sender, EventArgs e) { int taskid = 0; bool result = int.TryParse(tbTaskId.Text.Trim(), out taskid); if (result) { List taskViewList = new List(); using (Model edm = new Model()) { TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.ID == taskid); if (task.TASKTYPE == 2) { foreach (var i in task.SrmTask) { taskCommon taskCommon = new taskCommon(); taskCommon.id = i.ID; taskCommon.device = "堆垛机"; taskCommon.deviceNum = i.USESRMID; taskCommon.sourcePlace = i.SOURCEPLACE; taskCommon.toPlace = i.TOPLACE; taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; taskViewList.Add(taskCommon); } foreach (var i in task.RgvTask.OrderBy(x => x.ID)) { taskCommon taskCommon = new taskCommon(); taskCommon.id = i.ID; taskCommon.device = "RGV"; taskCommon.deviceNum = i.USERGVID; taskCommon.sourcePlace = i.SOURCEPLACE.ToString(); taskCommon.toPlace = i.TOPLACE.ToString(); taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; taskViewList.Add(taskCommon); } //foreach (var i in task.TranTasks) //{ // taskCommon taskCommon = new taskCommon(); // taskCommon.id = i.ID; // taskCommon.device = "输送线"; // taskCommon.deviceNum = i.SOURCEPLACE; // taskCommon.sourcePlace = i.SOURCEPLACE.ToString(); // taskCommon.toPlace = i.TOPLACE.ToString(); // taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; // taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; // taskViewList.Add(taskCommon); //} } else if (task.TASKTYPE == 1) { foreach (var i in task.TranTask) { taskCommon taskCommon = new taskCommon(); taskCommon.id = i.ID; taskCommon.device = "输送线"; taskCommon.deviceNum = i.SOURCEPLACE; taskCommon.sourcePlace = i.SOURCEPLACE.ToString(); taskCommon.toPlace = i.TOPLACE.ToString(); taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; taskViewList.Add(taskCommon); } foreach (var i in task.RgvTask.OrderBy(x => x.ID)) { taskCommon taskCommon = new taskCommon(); taskCommon.id = i.ID; taskCommon.device = "RGV"; taskCommon.deviceNum = i.USERGVID; taskCommon.sourcePlace = i.SOURCEPLACE.ToString(); taskCommon.toPlace = i.TOPLACE.ToString(); taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; taskViewList.Add(taskCommon); } foreach (var i in task.SrmTask) { taskCommon taskCommon = new taskCommon(); taskCommon.id = i.ID; taskCommon.device = "堆垛机"; taskCommon.deviceNum = i.USESRMID; taskCommon.sourcePlace = i.SOURCEPLACE; taskCommon.toPlace = i.TOPLACE; taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; taskViewList.Add(taskCommon); } } else if (task.TASKTYPE == 3) { foreach (var i in task.SrmTask) { taskCommon taskCommon = new taskCommon(); taskCommon.id = i.ID; taskCommon.device = "堆垛机"; taskCommon.deviceNum = i.USESRMID; taskCommon.sourcePlace = i.SOURCEPLACE; taskCommon.toPlace = i.TOPLACE; taskCommon.isReleased = i.ISRELEASED == 1 ? "是" : "否"; taskCommon.hasFinished = i.HASFINISHED == 1 ? "是" : "否"; taskViewList.Add(taskCommon); } } dGVQuery.DataSource = taskViewList; } } else { dGVQuery.DataSource = null; MessageBox.Show("输入正确格式任务号"); } } private void button23_Click(object sender, EventArgs e) { int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text); if (!rgvOPC.IsRgvReady(rgvID)) { label1.Text = rgvID + "号RGV设备状态不空闲,不允许重发任务"; label1.ForeColor = Color.Red; } RgvTask rgvTask = null; int palletType = 0; using (Model edm = new Model()) { rgvTask = edm.RgvTask.AsNoTracking().OrderByDescending(u => u.ID).FirstOrDefault(x => x.ISRELEASED == 1 && x.HASFINISHED == 0 && x.USERGVID == rgvID); if (rgvTask != null) { if (rgvTask.TASK_TASK.TASKSTATUS != "任务执行中") { label1.Text = rgvID + "号RGV没有需要重发的任务"; label1.ForeColor = Color.Red; return; } try { palletType = rgvTask.TASK_TASK.BASE_CONTAINER.BASE_PALLET.PALLETCODE ?? 0; } catch { label1.Text = rgvID + "号器具类型转换异常"; label1.ForeColor = Color.Red; return; } } } if (rgvTask != null) { //int result = rgvOPC.SendRgvTask(rgvID, rgvID * 1111, Convert.ToInt32(textBox5.Text), Convert.ToInt32(textBox6.Text), (comboBox6.Text == "搬运" ? 1 : 2), pallet, 1); int result = rgvOPC.SendRgvTask(rgvTask.USERGVID, (rgvTask.ID % 32767) + 1, rgvTask.SOURCEPLACE, rgvTask.TOPLACE, rgvTask.TASKTYPE, palletType, (rgvTask.FASTHERTASKID % 32767) + 1); if (result == 1) { label1.Text = rgvID + "号RGV任务发送成功"; label1.ForeColor = Color.Green; } else { label1.Text = rgvID + "号RGV任务发送失败"; label1.ForeColor = Color.Red; } } else { label1.Text = rgvID + "号RGV没有需要重发的任务"; label1.ForeColor = Color.Red; } } } }