private float GetModbusTcpVal()
{ TcpClient clientTcp;
try
{ float result = 0;
clientTcp = new TcpClient(192.168.100.40, 6084); // 替换为服务器IP和端口
NetworkStream stream = clientTcp.GetStream();
// 十六进制数据
string hexData = "010300120002640E00";
// 将十六进制数据转换为字节数组
byte[] data = Tools.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("-", " ");
//需要转换的数组
byte[] bytes3 = { byteDatas[3], byteDatas[4], byteDatas[5], byteDatas[6] }; // 示例字节数组
//数组倒序
Array.Reverse(bytes3);
//四个字节转浮点
result = BitConverter.ToSingle(bytes3, 0); // 从字节数组的第一个元素开始转换
return result;
}
catch (Exception e)
{ return -1;
}
finally
{ // 清理资源
clientTcp.Close();
}
}