完全替换掉System.Windows.Forms.Timer

This commit is contained in:
2026-05-08 13:11:06 +08:00
parent 8f6f7a561a
commit 1444e6b948

View File

@@ -29,7 +29,9 @@ using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement; using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using Excel = Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel;
using Timer = System.Windows.Forms.Timer; //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//using Timer = System.Windows.Forms.Timer;
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
using System.Timers; using System.Timers;
namespace namespace
{ {
@@ -108,13 +110,25 @@ namespace 精工涂胶检测项目
CogPMAlignTool mPM; CogPMAlignTool mPM;
CogFixtureTool mFIX; CogFixtureTool mFIX;
int currentStatus; int currentStatus;
private Timer inactivityTimer; #region inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 0BEGIN
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//private Timer inactivityTimer;
private System.Timers.Timer mInactivityTimer;
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
#endregion inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 0END
FormLogin formLogin; FormLogin formLogin;
private MyMessageFilter messageFilter; private MyMessageFilter messageFilter;
public ModbusTcpClient modbusClient; // 新增Modbus客户端实例 public ModbusTcpClient modbusClient; // 新增Modbus客户端实例
private Timer modbusPollTimer; // 新增轮询定时器
private System.Timers.Timer modbusHeartbeat;
#region modbusPollTimer System.Windows.Forms.Timer System.Timers.Timer 0BEGIN
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//private Timer modbusPollTimer; // 新增轮询定时器
private System.Timers.Timer mModbusPollTimer;
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
#endregion modbusPollTimer System.Windows.Forms.Timer System.Timers.Timer 0END
private System.Timers.Timer modbusHeartbeat;
public Plc plc; public Plc plc;
public bool _autoModbusReconnect = true; public bool _autoModbusReconnect = true;
@@ -314,6 +328,8 @@ namespace 精工涂胶检测项目
// 再次回收(清理等待终结后的对象) // 再次回收(清理等待终结后的对象)
GC.Collect(); GC.Collect();
} }
#region modbusPollTimer System.Windows.Forms.Timer System.Timers.Timer 1BEGIN
private void StartModbusPolling() private void StartModbusPolling()
{ // 创建定时器3000 毫秒 = 3 秒 { // 创建定时器3000 毫秒 = 3 秒
_gcTimer = new System.Timers.Timer(3000); _gcTimer = new System.Timers.Timer(3000);
@@ -326,11 +342,19 @@ namespace 精工涂胶检测项目
// 启动定时器 // 启动定时器
_gcTimer.Start(); _gcTimer.Start();
if (modbusPollTimer == null)
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//if (modbusPollTimer == null)
if (mModbusPollTimer == null)
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
{ {
Vpro初始化(); Vpro初始化();
modbusPollTimer = new Timer { Interval = 1000 }; //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
modbusPollTimer.Tick += async (s, e) => //modbusPollTimer = new Timer { Interval = 1000 };
//modbusPollTimer.Tick += async (s, e) =>
mModbusPollTimer = new System.Timers.Timer(1000);
mModbusPollTimer.Elapsed += async (s, e) =>
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
{ {
if (!modbusClient.IsConnected) return; if (!modbusClient.IsConnected) return;
@@ -369,7 +393,6 @@ namespace 精工涂胶检测项目
} }
} }
if (trigger == "\u0000" || trigger == "") if (trigger == "\u0000" || trigger == "")
{ {
AddLog("相机收到PLC结束触发信号", 0); AddLog("相机收到PLC结束触发信号", 0);
@@ -377,7 +400,6 @@ namespace 精工涂胶检测项目
AddLog("给PLC发送ResultAcq置零信号", 0); AddLog("给PLC发送ResultAcq置零信号", 0);
} }
//触发标定程序 //触发标定程序
if (trigger == "\u0002") if (trigger == "\u0002")
{ {
@@ -393,8 +415,6 @@ namespace 精工涂胶检测项目
cog3DDisplayV2WF1.Clear(); cog3DDisplayV2WF1.Clear();
} }
} }
} }
if (resultHeartBeat.IsSuccess) if (resultHeartBeat.IsSuccess)
@@ -436,12 +456,23 @@ namespace 精工涂胶检测项目
}; };
} }
if (!modbusPollTimer.Enabled) //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//if (!modbusPollTimer.Enabled)
//{
// modbusPollTimer.Start();
// AddLog("Modbus实时读取已启动", 0);
//}
if (!mModbusPollTimer.Enabled)
{ {
modbusPollTimer.Start(); mModbusPollTimer.Start();
AddLog("Modbus实时读取已启动", 0); AddLog("Modbus实时读取已启动", 0);
} }
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
} }
#endregion modbusPollTimer System.Windows.Forms.Timer System.Timers.Timer 1END
public string ConvertShortsToAsciiString(short[] shorts, bool isLittleEndian = false) public string ConvertShortsToAsciiString(short[] shorts, bool isLittleEndian = false)
{ {
var bytes = new List<byte>(); var bytes = new List<byte>();
@@ -480,18 +511,30 @@ namespace 精工涂胶检测项目
{ {
} }
#region inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 1BEGIN
private void () private void ()
{ {
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
// 初始化不活动计时器 // 初始化不活动计时器
// 初始化不活动计时器 //inactivityTimer = new Timer();
inactivityTimer = new Timer(); //inactivityTimer.Interval = 300000; // 5秒【这是5秒为啥写300秒到底是多少】
inactivityTimer.Interval = 300000; // 5秒 //inactivityTimer.Tick += InactivityTimer_Tick;
inactivityTimer.Tick += InactivityTimer_Tick;
mInactivityTimer = new System.Timers.Timer(5000); //5秒
mInactivityTimer.Elapsed += InactivityTimer_Elapsed;
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
// 初始化消息过滤器 // 初始化消息过滤器
messageFilter = new MyMessageFilter(); messageFilter = new MyMessageFilter();
Application.AddMessageFilter(messageFilter); Application.AddMessageFilter(messageFilter);
messageFilter.ActivityDetected += MessageFilter_ActivityDetected; messageFilter.ActivityDetected += MessageFilter_ActivityDetected;
} }
#endregion inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 1END
private void Tcp事件注册() private void Tcp事件注册()
{ {
//事件注册 //事件注册
@@ -538,36 +581,68 @@ namespace 精工涂胶检测项目
myJobManager.UserResultAvailable += MyJobManager_UserResultAvailable; myJobManager.UserResultAvailable += MyJobManager_UserResultAvailable;
} }
#region modbusPollTimer System.Windows.Forms.Timer System.Timers.Timer 2BEGIN
private void StopModbusPolling() private void StopModbusPolling()
{ {
if (modbusPollTimer != null && modbusPollTimer.Enabled) //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//if (modbusPollTimer != null && modbusPollTimer.Enabled)
//{
// modbusPollTimer.Stop();
// AddLog("Modbus断线已停止实时读取", 1);
//}
if (mModbusPollTimer != null && mModbusPollTimer.Enabled)
{ {
modbusPollTimer.Stop(); mModbusPollTimer.Stop();
AddLog("Modbus断线已停止实时读取", 1); AddLog("Modbus断线已停止实时读取", 1);
} }
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
} }
#endregion modbusPollTimer System.Windows.Forms.Timer System.Timers.Timer 2END
private void _modbusClient_Disconnected(object sender, string e) private void _modbusClient_Disconnected(object sender, string e)
{ {
AddLog($"PLC连接断开{e}", 1); AddLog($"PLC连接断开{e}", 1);
} }
private void InactivityTimer_Tick(object sender, EventArgs e)
#region inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 2BEGIN
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//private void InactivityTimer_Tick(object sender, EventArgs e)
//{
// if (currentStatus == 3)
// {
// SetMainEnabled(0, "登录");
// inactivityTimer.Stop();
// }
//}
private void InactivityTimer_Elapsed(object sender, ElapsedEventArgs e)
{ {
if (currentStatus == 3) if (currentStatus == 3)
{ {
SetMainEnabled(0, "登录"); SetMainEnabled(0, "登录");
inactivityTimer.Stop(); mInactivityTimer.Stop();
} }
} }
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
private void MessageFilter_ActivityDetected(object sender, EventArgs e) private void MessageFilter_ActivityDetected(object sender, EventArgs e)
{ {
if (currentStatus == 3) // 仅admin状态重置计时器 if (currentStatus == 3) // 仅admin状态重置计时器
{ {
inactivityTimer.Stop(); //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
inactivityTimer.Start(); //inactivityTimer.Stop();
//inactivityTimer.Start();
mInactivityTimer.Stop();
mInactivityTimer.Start();
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
} }
} }
#endregion inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 2END
/// <summary> /// <summary>
/// 程序关闭方法 /// 程序关闭方法
@@ -1680,6 +1755,8 @@ namespace 精工涂胶检测项目
public void SetMainEnabled(int status, string account) public void SetMainEnabled(int status, string account)
{ {
currentStatus = status; // 更新当前状态 currentStatus = status; // 更新当前状态
#region inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 3BEGIN
switch (status) switch (status)
{ {
case 0: case 0:
@@ -1692,7 +1769,10 @@ namespace 精工涂胶检测项目
this.ToolStripMenuItem1.Text = "登录"; this.ToolStripMenuItem1.Text = "登录";
this.退ToolStripMenuItem.Enabled = false; this.退ToolStripMenuItem.Enabled = false;
this.btn_Auto.Enabled = false; this.btn_Auto.Enabled = false;
inactivityTimer.Stop(); //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//inactivityTimer.Stop();
mInactivityTimer.Stop();
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
break; break;
case 1: case 1:
this.ToolStripMenuItem.Enabled = true; this.ToolStripMenuItem.Enabled = true;
@@ -1728,9 +1808,13 @@ namespace 精工涂胶检测项目
this.ToolStripMenuItem1.Enabled = false; this.ToolStripMenuItem1.Enabled = false;
this.退ToolStripMenuItem.Enabled = true; this.退ToolStripMenuItem.Enabled = true;
this.btn_Auto.Enabled = true; this.btn_Auto.Enabled = true;
inactivityTimer.Start(); //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
//inactivityTimer.Start();
mInactivityTimer.Start();
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
break; break;
} }
#endregion inactivityTimer System.Windows.Forms.Timer System.Timers.Timer 3END
} }
private void ToolStripMenuItem_Click(object sender, EventArgs e) private void ToolStripMenuItem_Click(object sender, EventArgs e)