using Module.Common; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Linq; using Module.Plc.Profinet.Tool; using Module.DB.Model; namespace ChipGlueDeviceManager { public partial class FrmIOMonitor : Form { private delegate void PrintChartParamCallBack(); //委托事件 private PrintChartParamCallBack DgChartParamRealValue; private bool IsPrintReadValue = true; /// /// 监控窗体类结构体 /// public FrmIOMonitor() { InitializeComponent(); DgChartParamRealValue = new PrintChartParamCallBack(PrintRealValueChart); //展示实时值 } /// /// 画面加载事件 /// /// /// private void FrmIO_Load(object sender, EventArgs e) { Thread printRealValueThread = new Thread(StartPrintRealValue); printRealValueThread.IsBackground = true; printRealValueThread.Start(); } /// /// 通道1的IO监控值 /// private MonitorModel t1MonitorModel = null; /// /// 通道2的IO监控值 /// private MonitorModel t2MonitorModel = null; /// /// 开始展示实时值线程方法 /// private void StartPrintRealValue() { while (IsPrintReadValue) { if (this.IsHandleCreated) { this.BeginInvoke(DgChartParamRealValue, null); } #region 读IO值 t1MonitorModel = PublicParams.T1MonitorModel; t2MonitorModel = PublicParams.T2MonitorModel; #endregion 读IO值 Thread.Sleep(100); } } /// /// 展示实时值 /// private void PrintRealValueChart() { #region 显示IO值 if (t1MonitorModel != null) { //通道1 IO var inputData = t1MonitorModel.InputData; for (int i = 0; i < inputData.Count; i++) { var label = GetLabelControl("lbx" + i); if (i == 27) { LabelStatus1Color(label, inputData[i]); } else { LabelStatusColor(label, inputData[i]); } } var outputData = t1MonitorModel.OutputData; for (int i = 0; i < outputData.Count; i++) { var label = GetLabelControl("lby" + i); LabelStatusColor(label, outputData[i]); } } if (t2MonitorModel != null) { //通道2 IO var t2InputData = t2MonitorModel.InputData; for (int i = 0; i < t2InputData.Count; i++) { var label = GetLabelControl("lblX" + i); if (i == 27) { LabelStatus1Color(label, t2InputData[i]); } else { LabelStatusColor(label, t2InputData[i]); } } var t2OutputData = t2MonitorModel.OutputData; for (int i = 0; i < t2OutputData.Count; i++) { var label = GetLabelControl("lblY" + i); LabelStatusColor(label, t2OutputData[i]); } } #endregion 显示IO值 } private void LabelStatusColor(Label lblColor, bool value) { if (lblColor == null) { return; } if (value) { lblColor.BackColor = PublicParams.buttonDownColor; } else { lblColor.BackColor = System.Drawing.SystemColors.ControlLight; } } private void LabelStatus1Color(Label lblColor, bool value) { if (value) { lblColor.BackColor = Color.Red; } else { lblColor.BackColor = System.Drawing.SystemColors.ControlLight; } } private Label GetLabelControl(string labelName) { var list = Controls.Find(labelName, true); if (list.Length == 0) { return null; } return (Label)list[0]; } } }