3 import com.ghgande.j2mod.modbus.ModbusException;
4 import com.ghgande.j2mod.modbus.io.ModbusTransaction;
5 import com.ghgande.j2mod.modbus.msg.ModbusMessage;
6 import com.ghgande.j2mod.modbus.msg.ModbusRequest;
7 import com.ghgande.j2mod.modbus.msg.ReadWriteMultipleRequest;
10 import org.jetbrains.annotations.Contract;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
28 private static final Logger log = LoggerFactory.getLogger(
34 private static final Integer gaugePressureAddress = 154;
42 private static final Integer gaugePressureWordsToRead = 2;
49 private static final Integer unitIDAddress = 0;
54 private static final Integer unitIDNumberofWords = 2;
60 private final Integer address;
76 this.address = address;
77 this.connection = connection;
79 "Created PVCi pressure gauge with address {} and conn {}",
84 }
catch (Exception error){
85 throw new IOException(error);
101 ModbusException, IOException {
102 log.debug(
"Method to get pressure was called");
104 ModbusRequest pressureRequest = getReadRegisterRequest(
105 gaugePressureAddress, gaugePressureWordsToRead
110 "PVCi Pressure gauge {} executing transaction {}",
111 this.toString(), transaction.toString());
112 transaction.execute();
113 ModbusMessage response = transaction.getResponse();
115 "Received response {} from transaction {}",
116 response.getHexMessage(), transaction.toString());
128 @Contract(
"_, _ -> !null")
129 private ReadWriteMultipleRequest getReadRegisterRequest(
130 Integer registerNumber, Integer numberofWordsToRead){
131 ReadWriteMultipleRequest request =
new 132 ReadWriteMultipleRequest();
134 request.setReadReference(registerNumber);
135 request.setReadWordCount(numberofWordsToRead);
136 request.setWriteReference(0);
137 request.setWriteWordCount(0);
139 request.setUnitID(address);
140 request.setHeadless();
155 ModbusException, IOException {
156 ModbusRequest request = getReadRegisterRequest(
157 unitIDAddress, unitIDNumberofWords
163 log.info(
"Checking for device. Attempting to read unit ID using " +
164 "transaction {}", transaction);
166 transaction.execute();
168 log.info(
"Check Unit ID transaction successfully completed");
170 ModbusMessage response = transaction.getResponse();
172 log.debug(
"Received response {} from transaction {}",
173 response.getHexMessage(), transaction.toString());
176 throw new IOException(
177 "Unable to create pressure gauge. No response from unit"
ModbusTransaction getTransactionForRequest(ModbusRequest request)
String parseStringFromResponse(ModbusMessage response)
PVCiPressureGauge(Integer address, ModbusConnector connection)
Float parseFloatFromResponse(ModbusMessage response)