private void button1_Click(object sender, EventArgs e) { TcpClient client = new TcpClient("192.168.200.84", 4198); // 替换为服务器IP和端口 NetworkStream stream = client.GetStream(); try { // 十六进制数据 string hexData = "010308d40002865300"; // 将十六进制数据转换为字节数组 byte[] data = ConvertHexStringToByteArray(hexData); // 发送数据 stream.Write(data, 0, data.Length); // 接收响应 data = new byte[1024]; int bytes = stream.Read(data, 0, data.Length); string response = Encoding.Unicode.GetString(data, 0, bytes); byte[] byteDatas = Encoding.Unicode.GetBytes(response); string hexString = BitConverter.ToString(byteDatas).Replace("-"," "); textBox1.AppendText($"接收: { hexString}"); textBox1.AppendText("\r\n"); string hexValue = byteDatas[5].ToString("X2") + byteDatas[6].ToString("X2"); // 十六进制数作为字符串 int result = Convert.ToInt32(hexValue, 16); // 转换为十进制 textBox1.AppendText($"解析: { result}"); textBox1.AppendText("\r\n"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { // 清理资源 client.Close(); } }
MODBUS TCP注意点
主机和从机、服务端和客户端
MODBUS请求响应模型
【在modbus协议中】
主机发送modbus请求,从机根据请求内容向主机返回响应。在modbus协议中,主机总是主动方,从机总是被动方。
标签:byteDatas,string,C#,TCP,Modbus,textBox1,ToString,data,AppendText From: https://www.cnblogs.com/lijunzaizi/p/18597315