1:直接上代码,亲测可用
package com.microservice.engineering.utils;
import com.alibaba.fastjson.JSONObject;
import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.exception.ModbusIOException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusNumberException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusProtocolException;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;
import com.microservice.common.engineering.domain.ConsumptionModbusData;
import com.microservice.engineering.mapper.consumptionModbus.ConsumptionModbusDataMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled;
import java.io.*;
import java.net.InetAddress;
import java.nio.file.Files;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
public class ModBusTcp {
public static void modBusTcp() {
try {
TcpParameters tcpParameters = new TcpParameters();
InetAddress adress = InetAddress.getByName("。。。。。");
tcpParameters.setHost(adress);
tcpParameters.setKeepAlive(true);
tcpParameters.setPort(Modbus.TCP_PORT);
ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
Modbus.setAutoIncrementTransactionId(true);
int slaveId = 1;
int offset = 499;
int quantity = 1;
try {
if (!master.isConnected()) {
master.connect();
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
for(int i = offset; i <= 788; i = i + quantity) {
int[] registerValues = master.readInputRegisters(slaveId, offset, quantity);
for (int value : registerValues) {
String str = "时间:"+ dateFormat.format(date) +", 寄存器地址: " + offset++ + ", 值: " + value;
file(str);
}
}
} catch (ModbusProtocolException | ModbusNumberException | ModbusIOException e) {
e.printStackTrace();
} finally {
try {
master.disconnect();
} catch (ModbusIOException e) {
e.printStackTrace();
}
}
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
e.printStackTrace();
}
}
public static void file(String str) {
FileWriter fw = null;
try {
File f = new File("E:\\Administrator\\Desktop\\报警记录.txt");
fw = new FileWriter(f, true);
} catch (IOException e) {
e.printStackTrace();
}
assert fw != null;
PrintWriter pw = new PrintWriter(fw);
pw.println(str);
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
modBusTcp();
}