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