From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 PLCHelper/IntReader.cs |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/PLCHelper/IntReader.cs b/PLCHelper/IntReader.cs
new file mode 100644
index 0000000..16536cb
--- /dev/null
+++ b/PLCHelper/IntReader.cs
@@ -0,0 +1,65 @@
+锘縰sing HslCommunication.Profinet.Siemens;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace PLCHelper
+{
+    public class DataChangedArg<T>
+    {
+        public T oldValue { get; set; }
+        public T newValue { get; set; }
+    }
+
+    public class IntReader
+    {
+        private int lastVallue = 0;
+
+        private string Address = string.Empty;
+        private int Timeout = 1000;
+
+        private SiemensS7Net client;
+
+        private volatile bool isRunning = false;
+
+        public event EventHandler<DataChangedArg<int>> DataChanged;
+
+        public IntReader(SiemensS7Net client, string address, int initValue = 0)
+        {
+            this.client = client;
+            this.Address = address;
+            this.lastVallue = initValue;
+        }
+
+        public void Stop()
+        {
+            isRunning = false;
+        }
+
+        public void Run()
+        {
+            isRunning = true;
+            Task.Run(() =>
+            {
+                while (isRunning)
+                {
+                    var res = client.ReadInt16(Address);
+                    if (res.IsSuccess)
+                    {
+                        int val = res.Content;
+                        if (val != lastVallue)
+                        {
+                            DataChanged?.Invoke(this, new DataChangedArg<int>
+                            {
+                                oldValue = lastVallue,
+                                newValue = val
+                            });
+                            lastVallue = val;
+                        }
+                    }
+                    Thread.Sleep(Timeout);
+                }
+            });
+        }
+    }
+}

--
Gitblit v1.9.1