using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading; using System.Windows.Forms; using WCS.Data; using WCS.Entity.Protocol.Station; namespace WCS_Client.Frm { public partial class Frm_YongGuanMontior : Form { private System.Timers.Timer _timer; private delegate void ShowTextDelegate();// 创建委托和委托对象 private List _plcnameSet = new List(); private List DDJSatatusSet = new List(); private List RGVSatatusSet = new List(); public bool isinitfrm = false; // 防止闪屏 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } } public Frm_YongGuanMontior() { isinitfrm = false; InitializeComponent(); Init(); } private void Init() { _plcnameSet.Add("SC1"); _plcnameSet.Add("SC2"); _plcnameSet.Add("SC3"); _plcnameSet.Add("SC4"); _plcnameSet.Add("SC5"); _plcnameSet.Add("SC6"); _plcnameSet.Add("SC7"); _plcnameSet.Add("SC8"); _plcnameSet.Add("RGV1"); _plcnameSet.Add("RGV2"); _plcnameSet.Add("RGV3"); _plcnameSet.Add("RGV4"); _plcnameSet.Add("RGV5"); _plcnameSet.Add("RGV6"); _plcnameSet.Add("RGV7"); _plcnameSet.Add("RGV8"); _plcnameSet.Add("RGV9"); _plcnameSet.Add("RGV10"); _plcnameSet.Add("RGV11"); _plcnameSet.Add("RGV12"); _plcnameSet.Add("RGV13"); _plcnameSet.Add("RGV14"); _plcnameSet.Add("Conv"); var plcnameSetsrm = _plcnameSet.Where(value => value.Contains("SC")).ToList(); for (int i = 0; i < plcnameSetsrm.Count; i++) { var item = plcnameSetsrm[i]; if (!DDJSatatusSet.Any(v => v.SrmName == item)) { var ddjsatatus = new DDJSatatus(); ddjsatatus.SrmName = item; int index = i + 1; ddjsatatus.G = (PictureBox)FindControl("G" + index); ddjsatatus.LblInStatus = (Label)FindControl("lblInStatus" + index); ddjsatatus.LblOutStatus = (Label)FindControl("lblOutStatus" + index); ddjsatatus.DdjMode = (Label)FindControl("ddjMode" + index); ddjsatatus.DdjStatus = (Label)FindControl("ddjStatus" + index); ddjsatatus.DdjOrdId = (Label)FindControl("ddjOrdId" + index); ddjsatatus.DdjOptType = (Label)FindControl("ddjOptType" + index); ddjsatatus.DdjPosCurr = (Label)FindControl("ddjPosCurr" + index); ddjsatatus.DdjWorkTime = (Label)FindControl("ddjWorkTime" + index); ddjsatatus.DdjTotal_KM = (Label)FindControl("ddjTotal_KM" + index); ddjsatatus.DdjPosFrom = (Label)FindControl("ddjPosFrom" + index); ddjsatatus.DdjPosTo = (Label)FindControl("ddjPosTo" + index); DDJSatatusSet.Add(ddjsatatus); } } var plcnameSetrgv = _plcnameSet.Where(value => value.Contains("RGV")).ToList(); for (int i = 0; i < plcnameSetrgv.Count; i++) { var item = plcnameSetrgv[i]; if (!RGVSatatusSet.Any(v => v.RGVName == item)) { var rgvsatatus = new RGVSatatus(); rgvsatatus.RGVName = item; int index = Convert.ToInt32(item.Substring(3, 1).ToString()); rgvsatatus.G = (PictureBox)FindControl("GV" + index); rgvsatatus.RGVMode = (Label)FindControl("rgvMode" + index); rgvsatatus.RGVStatus = (Label)FindControl("rgvStatus" + index); rgvsatatus.RGVOrdId = (Label)FindControl("rgvOrdId" + index); rgvsatatus.RGVPosCurr = (Label)FindControl("rgvPosCurr" + index); rgvsatatus.RGVPosFrom = (Label)FindControl("rgvPosFrom" + index); rgvsatatus.RGVPosTo = (Label)FindControl("rgvPosTo" + index); rgvsatatus.RGVOptType = (Label)FindControl("rgvOptType" + index); RGVSatatusSet.Add(rgvsatatus); } } } private Control FindControl(string controlName) { var control = Controls.Find(controlName, true); if (control.Count() > 0) return control[0]; else return null; } private void Frm_YongGuanMontior_Load(object sender, EventArgs e) { _timer = new System.Timers.Timer(4000); _timer.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件; _timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); _timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; //this.BeginInvoke(new ShowTextDelegate(InItpan11)); } private static int _theout = 0; private void theout(object sender, EventArgs e) { if (Interlocked.Exchange(ref _theout, 1) == 0) { try { Current.RefreshData(true); var listDDJ = BaseWorkflow.QueryStackerdDataDDJ(_plcnameSet); ShowData(); } catch (Exception ex) { } finally { Interlocked.Exchange(ref _theout, 0); } } } private void ShowData() { try { if (InvokeRequired) { //异步调用委托(后面添加方法需要将方法委托其中) this.BeginInvoke(new ShowTextDelegate(pan11)); } else { } } catch (Exception ex) { LogHelper.Sys_Log.WriteLog(ex.ToString()); } } public void pan11() { //try //{ // var pack = eqpData.deviceDataPack; // // var frame = pack.Frame;//数据帧(数据产生的时间) // var convdata = pack.StationDatas;//输送机数据 // var rgvdata = pack.RGVDatas;//穿梭车数据 // var scdata = pack.SCDatas;//堆垛机数据 // // var robotdata = pack.RobotData;//机器人数据 // //var pldata = pack.ProdLineData;//产线数据 // //string startTime = DateTime.Now.ToString(); // foreach (var item in scdata.Datas) // { // //只更新有变更的数据 // //if (eqpData.oldDeviceDataPack != null) // //{ // // var oldItem = eqpData.oldDeviceDataPack.SCDatas.Datas.FirstOrDefault(p => p.Code == item.Code); // // if (oldItem.ToString() == item.ToString()) return; // //} // var ddjstatus = DDJSatatusSet.FirstOrDefault(v => v.SrmName == item.Code); // if (ddjstatus != null) // { // //模式 // ddjstatus.DdjMode.Text = item.D521.SRMMode.ToString(); // if (item.D521.SRMMode.ToString() == "远程") // { // ddjstatus.G.Image = Properties.Resources.绿; // } // else if (item.D521.SRMMode.ToString() == "半自动") // { // ddjstatus.G.Image = Properties.Resources.黄; // } // else if (item.D521.SRMMode.ToString() == "手动") // { // ddjstatus.G.Image = Properties.Resources.黄; // } // else if (item.D521.SRMMode.ToString() == "维修") // { // ddjstatus.G.Image = Properties.Resources.红; // } // ////状态 // ddjstatus.DdjStatus.Text = item.D521.SRMStatus.ToString(); // ////任务Id // ddjstatus.DdjOrdId.Text = item.D521.TaskID_1.ToString(); // var task = SugarBase.DB.Queryable().First(v => v.ID == item.D521.TaskID_1); // if (task != null) // { // //任务类型 // ddjstatus.DdjOptType.Text = task.TYPE.ToString(); // if (task.TYPE == TaskType.入库) // { // ddjstatus.LblInStatus.BackColor = Color.Lime; // ddjstatus.LblOutStatus.BackColor = Color.DarkGray; // } // else if (task.TYPE == TaskType.出库) // { // ddjstatus.LblInStatus.BackColor = Color.DarkGray; // ddjstatus.LblOutStatus.BackColor = Color.Lime; // } // else // { // ddjstatus.LblInStatus.BackColor = Color.DarkGray; // ddjstatus.LblOutStatus.BackColor = Color.DarkGray; // } // } // else // { // ddjstatus.LblInStatus.BackColor = Color.DarkGray; // ddjstatus.LblOutStatus.BackColor = Color.DarkGray; // } // //当前位置 // ddjstatus.DdjPosCurr.Text = item.D521.TravelPos_1.ToString(); // ////运行时长 // ddjstatus.DdjWorkTime.Text = item.D521.Runtime.ToString() + "h"; // ////里程数 // ddjstatus.DdjTotal_KM.Text = item.D521.TotalKM.ToString() + "KM"; // //起始位置 // ddjstatus.DdjPosFrom.Text = item.D521.SLine_1.ToString() + "-" + item.D521.SCol_1.ToString() + "-" + item.D521.SLayer_1.ToString(); // //目标位置 // ddjstatus.DdjPosTo.Text = item.D521.SLine_1.ToString() + "-" + item.D521.SCol_1.ToString() + "-" + item.D521.SLayer_1.ToString(); // } // } // //RGV // foreach (var item in rgvdata.Datas) // { // //只更新有变更的数据 // //var oldItem = eqpData.oldDeviceDataPack.RGVDatas.Datas.FirstOrDefault(p => p.Code == item.Code); // //if (oldItem.ToString() == item.ToString()) return; // var rgvstatus = RGVSatatusSet.FirstOrDefault(v => v.RGVName == item.Code); // if (rgvstatus != null) // { // string workmode = item.D521.WorkMode.ToString(); // //模式 // rgvstatus.RGVMode.Text = item.D521.WorkMode.ToString(); // if (item.D521.WorkMode.ToString() == "自动") // { // rgvstatus.G.Image = Properties.Resources.绿; // } // else if (item.D521.WorkMode.ToString() == "半自动") // { // rgvstatus.G.Image = Properties.Resources.黄; // } // else if (item.D521.WorkMode.ToString() == "手动") // { // rgvstatus.G.Image = Properties.Resources.黄; // } // else if (item.D521.WorkMode.ToString() == "维修") // { // rgvstatus.G.Image = Properties.Resources.红; // } // ////状态 // rgvstatus.RGVStatus.Text = item.D521.SystemStatus.ToString(); // ////任务Id // rgvstatus.RGVOrdId.Text = item.D521.TaskID.ToString(); // //作业类型 // rgvstatus.RGVOptType.Text = item.D521.TaskType.ToString(); // //当前位置 // rgvstatus.RGVPosCurr.Text = item.D521.Position.ToString(); // //起始位置 // rgvstatus.RGVPosFrom.Text = item.D521.StartPosition.ToString(); // //目标位置 // rgvstatus.RGVPosTo.Text = item.D521.DestPosition.ToString(); // var control = FindControl("con" + item.Code); // if (control != null) // { // if (control is Conveyor6) // { // var con = (Conveyor6)control; // con.button1.Text = item.Code; // if (item.D521.PH_Status == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Rgv02.png"); // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/shelf16UD.png"); // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor5) // { // var con = (Conveyor5)control; // con.button1.Text = item.Code; // if (item.D521.PH_Status == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/rgv03.png"); // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/shelf16UD1.png"); // con.button1.Tag = "empty"; // } // } // } // } // } // } // //输送线 // foreach (var item in convdata.Datas) // { // //只更新有变更的数据 // var control = FindControl("con" + item.Code); // if (control != null) // { // if (control is Conveyor) // { // var con = (Conveyor)control; // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // con.button1.Text = item.Code.ToString(); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Rgv02.png"); // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/shelf16UD.png"); // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor_L) // { // var con = (Conveyor_L)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor_L.png");//1009L11.png // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1009L11.png");//1009L11.png // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor_R) // { // var con = (Conveyor_R)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor_R.png");//1009L1.png // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1009L1.png");//1009L1.png // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor4_L_R) // { // var con = (Conveyor4_L_R)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor4_L_R.png"); // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1001LR.gif"); // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor3) // { // var con = (Conveyor3)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor3.png");//1009R1_A.png // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1004LR.png");//1009R1.png // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor3_A) // { // var con = (Conveyor3_A)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor3_A_Box.png");//Conveyor3_A_Box.png // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1009_A.png");//1009_A.png // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor3_B) // { // var con = (Conveyor3_B)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1009R1_B.png");//1009R1_A.png // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1009R1.png");//1009R1.png // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor4_left) // { // var con = (Conveyor4_left)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor4_left.png"); // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1001L.gif"); // con.button1.Tag = "empty"; // } // } // } // else if (control is Conveyor4_right) // { // var con = (Conveyor4_right)control; // con.button1.Text = item.Code.ToString(); // if (item.D523.Fault != 0) con.BackColor = Color.Red; // else if (item.D523.Status == 0) con.BackColor = Color.Yellow; // else con.BackColor = Color.FromArgb(0, 144, 154); // if (item.D521.PH_STATUS == true) // { // if (con.button1.Tag.ToString() != "pall") // { // con.button1.BackgroundImage = Image.FromFile("Resources/Conveyor4_right.png"); // con.button1.Tag = "pall"; // } // } // else // { // if (con.button1.Tag.ToString() != "empty") // { // con.button1.BackgroundImage = Image.FromFile("Resources/1001LR.gif"); // con.button1.Tag = "empty"; // } // } // } // } // } // //string endtTime = DateTime.Now.ToString(); // //MessageBox.Show("开始时间--" + startTime + ",结束时间--" + endtTime); // //eqpData.deviceDataPack = pack; //} //catch (Exception ex) //{ //} //finally //{ // isinitfrm = true; //} } private void lblsrm01_Click(object sender, EventArgs e) { Label srm = (Label)sender; string equName = srm.Name.Substring(3); FrmEquMsg_dtl Frm = new FrmEquMsg_dtl(equName); Frm.Show(); } private void Frm_YongGuanMontior_FormClosing(object sender, FormClosingEventArgs e) { _timer.Stop(); _timer.Elapsed -= new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件; } private void con2114_Load(object sender, EventArgs e) { } private void tableCellLabel23_Load(object sender, EventArgs e) { } private void con2035_Load(object sender, EventArgs e) { } } public class DDJSatatus { /// /// 状态图标 /// public PictureBox G { get; set; } /// /// 堆垛机名称 /// public string SrmName { get; set; } /// /// 入库状态 /// public Label LblInStatus { get; set; } /// /// 出库状态 /// public Label LblOutStatus { get; set; } /// /// 堆垛机模式 /// public Label DdjMode { get; set; } /// /// 堆垛机工作状态 /// public Label DdjStatus { get; set; } /// /// 堆垛机工作任务 /// public Label DdjOrdId { get; set; } /// /// 堆垛机作业类型 /// public Label DdjOptType { get; set; } /// /// 堆垛机当前位置 /// public Label DdjPosCurr { get; set; } /// /// 运行时间 /// public Label DdjWorkTime { get; set; } /// /// 里程数 /// public Label DdjTotal_KM { get; set; } /// /// 源仓位 /// public Label DdjPosFrom { get; set; } /// /// 目标仓位 /// public Label DdjPosTo { get; set; } } public class RGVSatatus { /// /// 状态图标 /// public PictureBox G { get; set; } /// /// RGV名称 /// public string RGVName { get; set; } /// /// RGV模式 /// public Label RGVMode { get; set; } /// /// RGV工作状态 /// public Label RGVStatus { get; set; } /// /// RGV工作任务 /// public Label RGVOrdId { get; set; } /// /// RGV作业类型 /// public Label RGVOptType { get; set; } /// /// RGV当前位置 /// public Label RGVPosCurr { get; set; } /// /// 起始站台 /// public Label RGVPosFrom { get; set; } /// /// 目标站台 /// public Label RGVPosTo { get; set; } } public class WCS_STATION5201 : WCS_Station520 { public new DateTime UPDATETIME { get; set; } } }