完全替换掉System.Windows.Forms.Timer
This commit is contained in:
@@ -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 ≡≡≡≡≡≡≡≡≡≡【0】【BEGIN】
|
||||
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
|
||||
//private Timer inactivityTimer;
|
||||
private System.Timers.Timer mInactivityTimer;
|
||||
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
|
||||
#endregion ≡≡≡≡≡≡≡≡≡≡【inactivityTimer 定时器修改】:由 System.Windows.Forms.Timer 改为 System.Timers.Timer ≡≡≡≡≡≡≡≡≡≡【0】【END】
|
||||
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【0】【BEGIN】
|
||||
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【BEGIN】
|
||||
//private Timer modbusPollTimer; // 新增轮询定时器
|
||||
private System.Timers.Timer mModbusPollTimer;
|
||||
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【END】
|
||||
#endregion ≡≡≡≡≡≡≡≡≡≡【modbusPollTimer 定时器修改】:由 System.Windows.Forms.Timer 改为 System.Timers.Timer ≡≡≡≡≡≡≡≡≡≡【0】【END】
|
||||
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【1】【BEGIN】
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【1】【END】
|
||||
|
||||
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【1】【BEGIN】
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【1】【END】
|
||||
|
||||
|
||||
|
||||
private void Tcp事件注册()
|
||||
{
|
||||
//事件注册
|
||||
@@ -538,36 +581,68 @@ namespace 精工涂胶检测项目
|
||||
|
||||
myJobManager.UserResultAvailable += MyJobManager_UserResultAvailable;
|
||||
}
|
||||
|
||||
#region ≡≡≡≡≡≡≡≡≡≡【modbusPollTimer 定时器修改】:由 System.Windows.Forms.Timer 改为 System.Timers.Timer ≡≡≡≡≡≡≡≡≡≡【2】【BEGIN】
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【2】【END】
|
||||
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【2】【BEGIN】
|
||||
|
||||
//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡【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 ≡≡≡≡≡≡≡≡≡≡【2】【END】
|
||||
|
||||
/// <summary>
|
||||
/// 程序关闭方法
|
||||
@@ -1680,6 +1755,8 @@ namespace 精工涂胶检测项目
|
||||
public void SetMainEnabled(int status, string account)
|
||||
{
|
||||
currentStatus = status; // 更新当前状态
|
||||
|
||||
#region ≡≡≡≡≡≡≡≡≡≡【inactivityTimer 定时器修改】:由 System.Windows.Forms.Timer 改为 System.Timers.Timer ≡≡≡≡≡≡≡≡≡≡【3】【BEGIN】
|
||||
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 ≡≡≡≡≡≡≡≡≡≡【3】【END】
|
||||
}
|
||||
|
||||
private void 登录ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user