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/RestTcpClient.cs | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 114 insertions(+), 0 deletions(-)
diff --git a/PLCHelper/RestTcpClient.cs b/PLCHelper/RestTcpClient.cs
new file mode 100644
index 0000000..968bc9c
--- /dev/null
+++ b/PLCHelper/RestTcpClient.cs
@@ -0,0 +1,114 @@
+锘縰sing HslCommunication;
+using System;
+using System.IO;
+using System.Net.Sockets;
+using System.Text;
+
+namespace PLCHelper
+{
+ public class RestTcpClient : IDisposable
+ {
+ public string IP { get; private set; }
+ public int Port { get; private set; }
+
+ public int ReceiveTimeout { get; set; } = 5000;
+
+ private TcpClient tcpClient;
+ private Stream Stream;
+ private BinaryReader reader;
+ private BinaryWriter writer;
+
+ public RestTcpClient(string ip, int port)
+ {
+ IP = ip;
+ Port = port;
+ }
+
+ public void ConnectServer()
+ {
+ tcpClient = new TcpClient(IP, Port);
+ tcpClient.ReceiveTimeout = ReceiveTimeout;
+ Stream = tcpClient.GetStream();
+ reader = new BinaryReader(Stream);
+ writer = new BinaryWriter(Stream);
+ }
+
+ public OperateResult<bool> ReadBool(string data)
+ {
+ OperateResult<bool> res = new OperateResult<bool>();
+ if (Request(data, out string response, out string errMsg))
+ {
+ res.Content = bool.Parse(response);
+ res.IsSuccess = true;
+ }
+ else
+ {
+ res.Message = errMsg;
+ res.IsSuccess = false;
+ }
+ return res;
+ }
+
+ public OperateResult Write(string data, bool val)
+ {
+ OperateResult res = new OperateResult();
+ if (Request(data, out string response, out string errMsg))
+ {
+ res.IsSuccess = true;
+ }
+ else
+ {
+ res.Message = errMsg;
+ res.IsSuccess = false;
+ }
+ return res;
+ }
+
+ public void Send(string data)
+ {
+ data = data + "\r";
+ writer.Write(Encoding.UTF8.GetBytes(data));
+ writer.Flush();
+ }
+
+ public bool Request(string data, out string response, out string errMsg)
+ {
+ lock (this)
+ {
+ errMsg = string.Empty;
+ response = string.Empty;
+ try
+ {
+ Send(data);
+ response = Receive();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ errMsg = ex.Message;
+ return false;
+ }
+ }
+ }
+
+ private string Receive()
+ {
+ byte[] array = new byte[1024];
+ int num = tcpClient.Client.Receive(array);
+ if (num == 0)
+ {
+ throw new Exception("Closed");
+ }
+ var bytes = new byte[num];
+ Array.Copy(array, bytes, num);
+ string data = Encoding.UTF8.GetString(bytes);
+ if (data.EndsWith("\r")) data = data.Substring(0, data.Length - 1);
+ return data;
+ }
+
+ public void Dispose()
+ {
+ tcpClient.Close();
+ }
+ }
+}
--
Gitblit v1.9.1