C# Modbus Tcp实现(一)
1.C# 中数字常见操作及其取值范围2.C# 泛型列表类型管理数据集合3.C# 通过Queue类来实现队列的先进先出4.C# 非泛型集合的简单迭代5.C# 语言集成查询LINQ6.委托简单实现7..net 和.net framework区别8.C#-随笔杂记9.wpf-TextBlock文本内容自动换行10.C# 非引用类型初始化为空11.C#------------await12.C#------新特性之??、?、??= 使用13.C#------LINQ查询(一)14.C#——LINQ to XML(创建 XML 树)15.C#——LINQ to XML(内容快速查找)16.C#——LINQ to XML(使用 Descendants 方法查找单个子代)17.C#——fixed用法18.C#——匿名类型19.C#——属性init访问器方法20.C#——自动实现的属性21.C#——对象初始值设定项22.Assembly.CreateInstance 方法和Activator.CreateInstance 方法(C#)23.DragDrop.DoDragDrop(DependencyObject, Object, DragDropEffects) 方法——控件拖动方法24.通讯过程中16进制字符和byte[]/十进制和16进制转换(一)25.C# Modbus Tcp 实现(二)
26.C# Modbus Tcp实现(一)
27.C# 进制变换过程中左侧填充0实现28.DLR(动态语言运行时)(一)29.wpf textbox中UpdateSourceTrigger=PropertyChanged类CSocketClient主要包括以下内容:
private TcpClient _client; public Thread _connectionThread; private StreamWriter _write; public ClientRecMsgClass GClientRecMsgClass1 = new ClientRecMsgClass(); private string hostname = Dns.GetHostName(); private string recMessage = ""; public string RecMessage { get { return recMessage; } set { recMessage = value; } } private int port = 0; public int Port { get { return port; } set { port = value; } } private string ip = ""; public string Ip { get { return ip; } set { ip = value; } }
public CSocketClient(string ipAddress, int portNumber) { port = portNumber; ip = ipAddress; ConnectToServer(); } public CSocketClient() { }
public void ConnectToServer() { try { _connectionThread = new System.Threading.Thread(new ThreadStart(ReceiveDataFromServer)); _connectionThread.IsBackground = true; _connectionThread.Priority = ThreadPriority.AboveNormal; _connectionThread.Name = "Handle Server"; _connectionThread.Start(); } catch (Exception ex) { //MessageBox.Show(this, ex.Message, "QuickBuild Client Sample"); } }
private void ReceiveDataFromServer() { try { _client = new TcpClient(ip, port); } catch (SocketException ex) { return; } NetworkStream netStream = null; try { netStream = _client.GetStream(); } catch (Exception ex) { return; } if (netStream.CanRead) { try { byte[] receiveBuffer = new byte[4096]; int bytesReceived; // Received byte count while ((bytesReceived = netStream.Read(receiveBuffer, 0, receiveBuffer.Length)) > 0) { recMessage = Encoding.ASCII.GetString(receiveBuffer, 0, bytesReceived);
GClientRecMsgClass1.ClientRecMsg1(GClientRecMsgClass1); if (_write != null) _write.Write(Encoding.ASCII.GetString(receiveBuffer, 0, bytesReceived)); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } StopClient(); }
private void StopClient() { if (_client != null) { _client.Close(); _connectionThread.Join(); } } private void UpdateGUI(string s) { }
public void SendMsgToServer(string sendData) { try { byte[] buffer = Encoding.Default.GetBytes(sendData); try { _client.Client.Send(buffer); } catch (Exception ex) { throw ex; } } catch { } }
public void SendMsgToServerByte(byte[] buffer) { try { try { _client.Client.Send(buffer); } catch (Exception ex) { throw ex; } } catch { } }
客户端处理事件:
#region 客户端处理事件 //声明客户端接收数据代理 public delegate void ClientRecMsg(object o); //声明一个类 public class ClientRecMsgClass { //声明一个事件 public event ClientRecMsg ClientRecMsgEvent1; //定义一个方法调用事件 public void ClientRecMsg1(object o) { if (ClientRecMsgEvent1 != null) { //调用事件的方法 ClientRecMsgEvent1(o); } } } #endregion
------------------------------------
承接
**视觉检测软件开发及调试
**工业软件开发
**上位机软件开发
wechat:luoran2024
qq:565934058
email:taoyuansu@qq.com
海量教育资源及影视资源下载
微信公众号:EFun科技
------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!