Я пытаюсь найти изменение статуса / значения регистра до и после операции записи. Но напечатанные значения одинаковы.
Мне нужно иметь возможность получить статус устройства в любой момент.
Любая помощь будет принята с благодарностью. Заранее спасибо
ModbusInput modbusInput = new ModbusInput(ipAddress, BARRIER_PORT);
ModBusService modBusService = new ModBusService(modbusInput);
//Get the barrier operation based on the request type UP | DN | FR | UF
BarrierOperation barrierOperation = modBusService.getBarrierOperation("UP");
//Send request to barrier to update the barrier operation
boolean isSuccess = modBusService.sendOperation(barrierOperation);
LOG.info("Barrier status - " + isSuccess);
public boolean sendOperation(BarrierOperation barrierOperation) {
boolean result=false;
try {
modbusInput.setQuantity(barrierOperation.getCode());
System.out.println("BS Status before - " + iModbusExecutor.readHoldingRegister(modbusInput));
result = iModbusExecutor.writeSingleRegister(modbusInput);
System.out.println("BS Status after - " + iModbusExecutor.readHoldingRegister(modbusInput));
return result;
} catch (Exception ex) {
log.error("Exception at sendOperation : ", ex);
return result;
}
public boolean readHoldingRegister(ModbusInput modbusInput) throws Exception {
ModbusTCPMaster master = getInstance(modbusInput.getIpAddress(), modbusInput.getPort());
try {
master.connect();
InputRegister[] inputRegisters = master.readMultipleRegisters(modbusInput.getRegisterAddress(), 8);
for(int i=0;i<inputRegisters.length;i++) {
log.info("readHolding - " + inputRegisters[i].getValue());
log.info("readHolding - " + inputRegisters[i].toBytes().toString());
}
master.disconnect();
return true;
} catch (Exception e) {
log.info("Cannot connect to slave - " + e.getMessage());
return false;
}
}