ai_trans.setRequest(ai_req);
ao_trans = new ModbusTCPTransaction(con);
ao_trans.setRequest(ao_req);
//5. Prepare holders to update only on change
SimpleRegister new_out = new SimpleRegister(0);
ao_req.setRegister(new_out);
int last_out = Integer.MIN_VALUE;
//5. Execute the transaction repeatedly
do {
ai_trans.execute();
int new_in =
((ReadInputRegistersResponse) ai_trans.getResponse()).getRegister(0).getValue();
//write only if differ
if (new_in != last_out) {
new_out.setValue(new_in); //update register
ao_trans.execute();
last_out = new_in;
if(Modbus.debug) System.out.println("Updated Register with value from Input Register.");
}
} while (true);