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 作为历史根节点

---
 SimpleUtil/HMI.Simple.Util/DataSender.cs |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/SimpleUtil/HMI.Simple.Util/DataSender.cs b/SimpleUtil/HMI.Simple.Util/DataSender.cs
new file mode 100644
index 0000000..bc22380
--- /dev/null
+++ b/SimpleUtil/HMI.Simple.Util/DataSender.cs
@@ -0,0 +1,103 @@
+锘縰sing System;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+
+namespace HMI.Simple.Util
+{
+    public class DataSender
+    {
+        private string _ip;
+        private int _port;
+        private bool _isConnected = false; // 鏄惁杩炴帴
+        private Socket _clientSocket; // 濂楁帴瀛�
+        private Thread _receiveThread = null; // 鎺ユ敹绾跨▼
+        private volatile bool needRecieve = true;
+
+        public event EventHandler<string> ExecuteMessageChanged;
+
+        public DataSender(string ip, int port)
+        {
+            this._ip = ip;
+            this._port = port;
+        }
+
+        public void Connect()
+        {
+            try
+            {
+                _clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+                IPAddress ipaddress = IPAddress.Parse(this._ip);
+                IPEndPoint endpoint = new IPEndPoint(ipaddress, _port);
+                _clientSocket.Connect(endpoint);
+                _isConnected = true;
+                _receiveThread = new Thread(Received);
+                _receiveThread.IsBackground = true;
+                _receiveThread.Start();
+            }
+            catch (Exception ex)
+            {
+                needRecieve = false;
+                _receiveThread?.Abort();
+                _receiveThread = null;
+                _clientSocket.Close();
+                _isConnected = false;
+                throw ex;
+            }
+        }
+
+        public void Disconnect()
+        {
+            needRecieve = false;
+            _clientSocket.Close();
+            _receiveThread?.Abort();
+            _receiveThread = null;
+            _isConnected = false;
+        }
+
+        private void Send(string data)
+        {
+            byte[] arrClientSendMsg = Encoding.UTF8.GetBytes(data);
+            _clientSocket.Send(arrClientSendMsg);
+        }
+
+        private void Received()
+        {
+            //while (needRecieve)
+            //{
+            //    byte[] arrRecMsg = new byte[1024 * 1024];
+            //    int length = _clientSocket.Receive(arrRecMsg);
+            //    string strRecMsg = Encoding.UTF8.GetString(arrRecMsg, 0, length);
+            //    ExecuteMessageChanged?.Invoke(this, strRecMsg);
+            //    Thread.Sleep(100);
+            //}
+        }
+
+
+        public bool SendStep(int ovenIndex, int cellIndex,
+            string name, string send, string value, string unit, string upper, string lower, string result, string time,
+            out string errorMsg)
+        {
+
+            errorMsg = null;
+            try
+            {
+                if (!_isConnected)
+                {
+                    errorMsg = "Not Connected";
+                    return false;
+                }
+
+                string msg = $"{ovenIndex};{cellIndex};{name},{send},{value},{unit},{upper},{lower},{result},{time}\n";
+                Send(msg);
+                return true;
+            }
+            catch (Exception ex)
+            {
+                errorMsg = ex.Message;
+                return false;
+            }
+        }
+    }
+}

--
Gitblit v1.9.1