You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
5.0 KiB

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;
/// <summary>
/// 监控窗体类结构体
/// </summary>
public FrmIOMonitor()
{
InitializeComponent();
DgChartParamRealValue = new PrintChartParamCallBack(PrintRealValueChart); //展示实时值
}
/// <summary>
/// 画面加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmIO_Load(object sender, EventArgs e)
{
Thread printRealValueThread = new Thread(StartPrintRealValue);
printRealValueThread.IsBackground = true;
printRealValueThread.Start();
}
/// <summary>
/// 通道1的IO监控值
/// </summary>
private MonitorModel t1MonitorModel = null;
/// <summary>
/// 通道2的IO监控值
/// </summary>
private MonitorModel t2MonitorModel = null;
/// <summary>
/// 开始展示实时值线程方法
/// </summary>
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);
}
}
/// <summary>
/// 展示实时值
/// </summary>
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];
}
}
}