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