Files
2026-05-29 13:44:10 +08:00

222 lines
5.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MesControl
{
public delegate void PlcStatusHandle();
public partial class PlcConnect: UserControl
{
public PlcConnect()
{
InitializeComponent();
}
public static PlcStatusHandle PlcBreakChange,PlcConnectChange;
#region
int externalTimerTimes =0;
int testPlcBreakInterval=10000;
int testPlcBreakTime=0;
int externalTimerInterval = 200;
bool isBreakPLC = true;
bool plcTestEnable;
bool plcBreakIsChanged=false;
bool plcConnectIsChanged = false;
#endregion
#region
void TimerTimeChange()
{
if (externalTimerTimes == 999)
{
externalTimerTimes = 0;
}
else
{
externalTimerTimes++;
}
if (testPlcBreakTime > 0)
{
testPlcBreakTime--;
plcBreakIsChanged = false;
if (PlcConnectChange!=null&&!plcConnectIsChanged)
{
PlcConnectChange();
plcConnectIsChanged = true;
}
}
else
{
if (plcTestEnable)
{
if(PlcBreakChange != null&& !plcBreakIsChanged)
{
PlcBreakChange();
plcBreakIsChanged = true;
}
plcConnectIsChanged = false;
}
isBreakPLC = true;
}
}
#endregion
#region
public void ExternalTimer()
{
if (!isBreakPLC)
{
switch (externalTimerTimes % 5)
{
case 0:
pictureBox_OpName.BackgroundImage = Properties.Resources.PlcConnect0;
break;
case 1:
pictureBox_OpName.BackgroundImage = Properties.Resources.PlcConnect1;
break;
case 2:
pictureBox_OpName.BackgroundImage = Properties.Resources.PlcConnect2;
break;
case 3:
pictureBox_OpName.BackgroundImage = Properties.Resources.PlcConnect3;
break;
case 4:
pictureBox_OpName.BackgroundImage = Properties.Resources.PlcConnect4;
break;
}
}
else
{
pictureBox_OpName.BackgroundImage = Properties.Resources.BreakPLC;
}
TimerTimeChange();
}
public void ExternalPlcConnect()
{
testPlcBreakTime = (testPlcBreakInterval / externalTimerInterval) + 1;
isBreakPLC = false;
}
public void PlcBreak()
{
pictureBox_OpName.BackgroundImage = Properties.Resources.BreakPLC;
isBreakPLC = true;
}
#endregion
#region
[Browsable(true)]
[Description("控件中显示的文本内容"), Category("外观"), DefaultValue("OP0000")]
public string LabelText
{
get
{
return label_OpName.Text;
}
set
{
label_OpName.Text = value;
}
}
[Browsable(true)]
[Description("外部定时器周期"), Category("行为"), DefaultValue("200")]
public int ExternalTimerInterval
{
get
{
return externalTimerInterval;
}
set
{
externalTimerInterval = value;
}
}
[Browsable(true)]
[Description("检测PLC在线状态超时超过此时间PLC为离线状态"), Category("行为"), DefaultValue("200")]
public int TestPlcBreakInterval
{
get
{
return testPlcBreakInterval;
}
set
{
testPlcBreakInterval = value;
}
}
[Browsable(true)]
[Description("指示PLC是否为断开状态"), Category("行为"), DefaultValue("True")]
public bool IsBreakPLC
{
get
{
return isBreakPLC;
}
set
{
isBreakPLC = value;
}
}
[Browsable(true)]
[Description("是否启用检测PLC在线状态功能"), Category("行为"), DefaultValue("True")]
public bool PlcTestEnable
{
get
{
return plcTestEnable;
}
set
{
plcTestEnable = value;
}
}
#endregion
}
}