diff --git a/JY.Inspection/HomeForm.cs b/JY.Inspection/HomeForm.cs
index b48b8e1..678db00 100644
--- a/JY.Inspection/HomeForm.cs
+++ b/JY.Inspection/HomeForm.cs
@@ -152,7 +152,6 @@ namespace JY.Inspection
private ByteTransformBase TransformBase = new ByteTransformBase();
-
///
/// 用于电芯出站时向FMS上报出站及生产数据
///
@@ -417,8 +416,7 @@ namespace JY.Inspection
#endregion
-
- #region 页面事件
+ #region 页面事件
private void HomeForm_Load(object sender, EventArgs e)
{
@@ -471,6 +469,8 @@ namespace JY.Inspection
_speech.SelectVoice(neededVoice.VoiceInfo.Name);
}
+ InitTaskScheduler();
+
LogManagerControl.AddLog("程序已启动", LogAddtype.local);
}
@@ -867,7 +867,6 @@ namespace JY.Inspection
{
while (true)
{
-
if (mCOMState.Token.IsCancellationRequested)
{
return;
@@ -875,8 +874,6 @@ namespace JY.Inspection
resetEventRecv.WaitOne();
if (isEnabled)
{
-
-
if (master !=null)
{
try
@@ -884,8 +881,7 @@ namespace JY.Inspection
List resylt = GetListInt(13);
List resylt_float = new List();
OperateResult result = new OperateResult();
-
-
+
for (int i = 0; i < Global.Instructions.Count; i++)
{
ushort startAddress = (ushort)System.Convert.ToInt32(Global.Instructions[i], 16);
@@ -912,7 +908,7 @@ namespace JY.Inspection
resylt_float.Add((Convert.ToDouble(resylt[index++]) / 10));
//线电压UAC
resylt_float.Add((Convert.ToDouble(resylt[index++]) / 10));
- ;
+
//电流IA
resylt_float.Add((Convert.ToDouble(resylt[index++]) / 1000));
//电流IB
@@ -940,7 +936,7 @@ namespace JY.Inspection
for (int i = 0; i < resylt.Count; i++)
{
omronPLCCom.lstMcUI[0].WriteDReg($"W380[{i.ToString()}]", (float)resylt_float[i]);
-
+
}
}
this.Invoke(new Action(() =>
@@ -1402,9 +1398,6 @@ namespace JY.Inspection
FrmCCDQuery frm = new FrmCCDQuery();
frm.ShowDialog();
}
-
-
-
#endregion
#region PLC读写
@@ -1560,10 +1553,7 @@ namespace JY.Inspection
omronPLCCom.lstMcUI[i].OmronStart(false);
omronPLCCom.lstMcUI[i].IsRun = false;
omronPLCCom.lstMcUI[i].btnStart.Text = "启动";
- omronPLCCom.lstMcUI[i].HeartBeat = false;
-
-
-
+ omronPLCCom.lstMcUI[i].HeartBeat = false;
}
}
}
diff --git a/JY.Inspection/HomeFormExtend.cs b/JY.Inspection/HomeFormExtend.cs
new file mode 100644
index 0000000..9d10da3
--- /dev/null
+++ b/JY.Inspection/HomeFormExtend.cs
@@ -0,0 +1,29 @@
+using JY.Model;
+using JY.Model.Common;
+using NPOI.SS.Formula.Functions;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+
+namespace JY.Inspection
+{
+ public partial class HomeForm
+ {
+ #region 定时任务
+ TaskScheduler scheduler = null;
+ private void InitTaskScheduler()
+ {
+ if (scheduler == null)
+ {
+ scheduler = new TaskScheduler();
+ }
+
+ scheduler.AddTask(state => {
+ Debug.WriteLine("Hello");
+ }, interval: 1000 * 60);
+ }
+ #endregion
+ }
+}
diff --git a/JY.Inspection/JY.Inspection.csproj b/JY.Inspection/JY.Inspection.csproj
index 385c97e..d79d98f 100644
--- a/JY.Inspection/JY.Inspection.csproj
+++ b/JY.Inspection/JY.Inspection.csproj
@@ -307,6 +307,9 @@
Component
+
+ Form
+
diff --git a/JY.Model/.vs/JY.Model.csproj.dtbcache.json b/JY.Model/.vs/JY.Model.csproj.dtbcache.json
new file mode 100644
index 0000000..0fe2ded
--- /dev/null
+++ b/JY.Model/.vs/JY.Model.csproj.dtbcache.json
@@ -0,0 +1 @@
+{"RootPath":"D:\\CodeProject\\1440\\JY.Model","ProjectFileName":"JY.Model.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"BL.Entity\\Chart24HourData.cs"},{"SourceFile":"BL.Entity\\RequestResult.cs"},{"SourceFile":"DB.Entity\\AbnormalVoice.cs"},{"SourceFile":"DB.Entity\\AlarmData.cs"},{"SourceFile":"DB.Entity\\CamInfor.cs"},{"SourceFile":"DB.Entity\\HourprodEntity.cs"},{"SourceFile":"DB.Entity\\ChartDataType.cs"},{"SourceFile":"DB.Entity\\BlankingData.cs"},{"SourceFile":"DB.Entity\\ParaRange.cs"},{"SourceFile":"DB.Entity\\PLCConfigBase.cs"},{"SourceFile":"DB.Entity\\PLCConfigPara.cs"},{"SourceFile":"DB.Entity\\ProductModel.cs"},{"SourceFile":"DB.Entity\\ProductParaBase.cs"},{"SourceFile":"DB.Entity\\ProductPara.cs"},{"SourceFile":"DB.Entity\\SystemConfig.cs"},{"SourceFile":"DB.Entity\\FeedingData.cs"},{"SourceFile":"DB.Entity\\TrayTestEntry.cs"},{"SourceFile":"Enums\\EnumAutority.cs"},{"SourceFile":"Enums\\EnumResultType.cs"},{"SourceFile":"Enums\\EnumSearchType.cs"},{"SourceFile":"Enums\\EnumUpMesStatus.cs"},{"SourceFile":"Excel\\CollectItemCfg.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.8.AssemblyAttributes.cs"}],"References":[{"Reference":"D:\\CodeProject\\1440\\packages\\CsvHelper.30.0.1\\lib\\net45\\CsvHelper.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\CodeProject\\1440\\packages\\SqlSugar.5.1.4.207\\lib\\SqlSugar.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\CodeProject\\1440\\packages\\System.Buffers.4.5.1\\lib\\net461\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\CodeProject\\1440\\packages\\System.Memory.4.5.4\\lib\\net461\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\CodeProject\\1440\\packages\\System.Numerics.Vectors.4.5.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\CodeProject\\1440\\packages\\System.Runtime.CompilerServices.Unsafe.4.5.3\\lib\\net461\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\Facades\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\JY.Inspection\\JY.Model.dll","OutputItemRelativePath":"JY.Model.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/JY.Model/Common/ScheduledTask.cs b/JY.Model/Common/ScheduledTask.cs
new file mode 100644
index 0000000..87b095d
--- /dev/null
+++ b/JY.Model/Common/ScheduledTask.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Concurrent;
+using System.Threading;
+
+namespace JY.Model.Common
+{
+ public class ScheduledTask : IDisposable
+ {
+ private Timer _timer;
+ private readonly TimerCallback _callback;
+ private readonly object _state;
+
+ public Guid TaskId { get; }
+ public int Interval { get; private set; } // 毫秒
+ public bool IsRunning { get; private set; }
+
+ public ScheduledTask(Guid taskId, TimerCallback callback, int interval, object state = null)
+ {
+ TaskId = taskId;
+ _callback = callback;
+ Interval = interval;
+ _state = state;
+ IsRunning = false;
+ }
+
+ public void Start()
+ {
+ if (IsRunning) return;
+ _timer = new Timer(_callback, _state, 0, Interval);
+ IsRunning = true;
+ }
+
+ public void ChangeInterval(int newInterval)
+ {
+ Interval = newInterval;
+ if (IsRunning && _timer != null)
+ {
+ _timer.Change(0, newInterval);
+ }
+ }
+
+ public void Stop()
+ {
+ if (!IsRunning) return;
+ _timer?.Change(Timeout.Infinite, Timeout.Infinite);
+ IsRunning = false;
+ }
+
+ public void Dispose()
+ {
+ Stop();
+ _timer?.Dispose();
+ }
+ }
+}
diff --git a/JY.Model/Common/TaskScheduler.cs b/JY.Model/Common/TaskScheduler.cs
new file mode 100644
index 0000000..43ef01e
--- /dev/null
+++ b/JY.Model/Common/TaskScheduler.cs
@@ -0,0 +1,78 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace JY.Model.Common
+{
+ ///
+ /// 定时任务管理器
+ ///
+ public class TaskScheduler : IDisposable
+ {
+ private readonly ConcurrentDictionary _tasks
+ = new ConcurrentDictionary();
+
+ ///
+ /// 添加一个新任务
+ ///
+ public Guid AddTask(TimerCallback callback, int interval, object state = null)
+ {
+ var taskId = Guid.NewGuid();
+ var task = new ScheduledTask(taskId, callback, interval, state);
+ _tasks[taskId] = task;
+ task.Start();
+ return taskId;
+ }
+
+ ///
+ /// 移除一个任务
+ ///
+ public bool RemoveTask(Guid taskId)
+ {
+ if (_tasks.TryRemove(taskId, out var task))
+ {
+ task.Dispose();
+ return true;
+ }
+ return false;
+ }
+
+ ///
+ /// 修改任务间隔
+ ///
+ public bool ChangeInterval(Guid taskId, int newInterval)
+ {
+ if (_tasks.TryGetValue(taskId, out var task))
+ {
+ task.ChangeInterval(newInterval);
+ return true;
+ }
+ return false;
+ }
+
+ ///
+ /// 停止所有任务
+ ///
+ public void StopAll()
+ {
+ foreach (var task in _tasks.Values)
+ {
+ task.Stop();
+ }
+ }
+
+ public void Dispose()
+ {
+ StopAll();
+ foreach (var task in _tasks.Values)
+ {
+ task.Dispose();
+ }
+ _tasks.Clear();
+ }
+ }
+}
diff --git a/JY.Model/JY.Model.csproj b/JY.Model/JY.Model.csproj
index 56fde9a..de44b3f 100644
--- a/JY.Model/JY.Model.csproj
+++ b/JY.Model/JY.Model.csproj
@@ -67,6 +67,8 @@
+
+
@@ -93,8 +95,6 @@
-
-
-
+
\ No newline at end of file
diff --git a/JY.Model/JY.Model.csproj.user b/JY.Model/JY.Model.csproj.user
new file mode 100644
index 0000000..0b24643
--- /dev/null
+++ b/JY.Model/JY.Model.csproj.user
@@ -0,0 +1,6 @@
+
+
+
+ ProjectFiles
+
+
\ No newline at end of file