Obj4RequestRegister.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package wei.yigulu.modbus.domain;
  2. import lombok.Getter;
  3. import wei.yigulu.modbus.domain.datatype.ModbusDataTypeEnum;
  4. import wei.yigulu.modbus.domain.request.RtuModbusRequest;
  5. import wei.yigulu.modbus.domain.request.TcpModbusRequest;
  6. import wei.yigulu.modbus.exceptiom.ModbusException;
  7. import wei.yigulu.modbus.utils.ModbusRequestDataUtils;
  8. import java.util.Map;
  9. /**
  10. * 请求寄存器的辅助类
  11. *
  12. * @author: xiuwei
  13. * @version:
  14. */
  15. public class Obj4RequestRegister extends Obj4RequestData {
  16. @Getter
  17. Map<Integer, ModbusDataTypeEnum> locator;
  18. public Obj4RequestRegister(int slaveId, FunctionCode functionCode,Map<Integer, ModbusDataTypeEnum> locator) throws ModbusException {
  19. super(slaveId, functionCode);
  20. if(functionCode!=FunctionCode.READ_HOLDING_REGISTERS && functionCode !=FunctionCode.READ_INPUT_REGISTERS){
  21. throw new ModbusException("该实体仅能接受3,4功能码,请求寄存器数据");
  22. }
  23. this.locator=locator;
  24. }
  25. @Override
  26. public TcpModbusRequest getTcpModbusRequest() throws ModbusException {
  27. if (this.tcpModbusRequest == null) {
  28. this.tcpModbusRequest = ModbusRequestDataUtils.verifyAndCreateRequest(new TcpModbusRequest(), slaveId, functionCode, locator);
  29. }
  30. return this.tcpModbusRequest;
  31. }
  32. @Override
  33. public RtuModbusRequest getRtuModbusRequest() throws ModbusException {
  34. if(this.rtuModbusRequest ==null){
  35. this.rtuModbusRequest = ModbusRequestDataUtils.verifyAndCreateRequest(new RtuModbusRequest(), slaveId, functionCode, locator);
  36. }
  37. return this.rtuModbusRequest;
  38. }
  39. }