Java代码实例,ModBus通讯协议
时间: 2023-05-18 15:03:34 浏览: 113
以下是一个简单的Java代码实例,用于实现ModBus通讯协议:
```
import java.net.*;
import java.io.*;
public class ModBusClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 502);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
// 发送ModBus请求
out.write(new byte[]{0x01, 0x03, 0x00, 0x00, 0x00, 0x01, (byte) 0x85, (byte) 0xCF});
// 读取ModBus响应
byte[] response = new byte[1024];
int len = in.read(response);
byte[] data = new byte[len - 9];
System.arraycopy(response, 9, data, 0, len - 9);
System.out.println("ModBus响应:" + bytesToHex(data));
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 将字节数组转换为十六进制字符串
private static String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
}
```
这个代码实例使用Java的Socket类来建立与ModBus服务器的连接,并发送一个读取寄存器的请求。请求的格式是ModBus协议的标准格式,具体可以参考ModBus协议的文档。在收到响应后,代码将响应中的数据提取出来,并将其转换为十六进制字符串进行输出。
注意:这个代码实例仅供参考,实际使用时需要根据具体的需求进行修改和优化。
阅读全文