Obj4RequestCoil.java 1.4 KB

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