FunctionCode.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package wei.yigulu.modbus.domain;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Getter;
  4. /**
  5. * 功能码 copy from modbus4j
  6. *
  7. * @author: xiuwei
  8. * @version:
  9. */
  10. @AllArgsConstructor
  11. public enum FunctionCode {
  12. /**
  13. * Constant <code>READ_COILS 1</code>
  14. */
  15. READ_COILS(1),
  16. READ_COILS_ERROR(0x81),
  17. /**
  18. * Constant <code>READ_DISCRETE_INPUTS 2</code>
  19. */
  20. READ_DISCRETE_INPUTS(2),
  21. READ_DISCRETE_INPUTS_ERROR(0x82),
  22. /**
  23. * Constant <code>READ_HOLDING_REGISTERS 3</code>
  24. */
  25. READ_HOLDING_REGISTERS(3),
  26. READ_HOLDING_REGISTERS_ERROR(0x83),
  27. /**
  28. * Constant <code>READ_INPUT_REGISTERS 4</code>
  29. */
  30. READ_INPUT_REGISTERS(4),
  31. READ_INPUT_REGISTERS_ERROR(0x84),
  32. /**
  33. * Constant <code>WRITE_COIL 5</code>
  34. */
  35. WRITE_COIL(5),
  36. WRITE_COIL_ERROR(0x85),
  37. /**
  38. * Constant <code>WRITE_REGISTER 6</code>
  39. */
  40. WRITE_REGISTER(6),
  41. WRITE_REGISTER_ERROR(0x86),
  42. /**
  43. * Constant <code>READ_EXCEPTION_STATUS 7</code>
  44. */
  45. READ_EXCEPTION_STATUS(7),
  46. /**
  47. * Constant <code>WRITE_COILS 15</code>
  48. */
  49. WRITE_COILS(15),
  50. WRITE_COILS_ERROR(0x8F),
  51. /**
  52. * Constant <code>WRITE_REGISTERS 16</code>
  53. */
  54. WRITE_REGISTERS(16),
  55. WRITE_REGISTERS_ERROR(0x90),
  56. /**
  57. * Constant <code>REPORT_SLAVE_ID 17</code>
  58. */
  59. REPORT_SLAVE_ID(17),
  60. /**
  61. * Constant <code>WRITE_MASK_REGISTER 22</code>
  62. */
  63. WRITE_MASK_REGISTER(22),
  64. /**
  65. * Constant <code>READ_WRITE_REGISTERS 23</code>
  66. */
  67. READ_WRITE_REGISTERS(23);
  68. @Getter
  69. private Integer code;
  70. public static FunctionCode valueOf(int code) {
  71. switch (code) {
  72. case 1:
  73. return READ_COILS;
  74. case 2:
  75. return READ_DISCRETE_INPUTS;
  76. case 3:
  77. return READ_HOLDING_REGISTERS;
  78. case 4:
  79. return READ_INPUT_REGISTERS;
  80. case 0x81:
  81. return READ_COILS_ERROR;
  82. case 0x82:
  83. return READ_DISCRETE_INPUTS_ERROR;
  84. case 0x83:
  85. return READ_HOLDING_REGISTERS_ERROR;
  86. case 0x84:
  87. return READ_INPUT_REGISTERS_ERROR;
  88. case 5:
  89. return WRITE_COIL;
  90. case 6:
  91. return WRITE_REGISTER;
  92. case 7:
  93. return READ_EXCEPTION_STATUS;
  94. case 15:
  95. return WRITE_COILS;
  96. case 16:
  97. return WRITE_REGISTERS;
  98. case 17:
  99. return REPORT_SLAVE_ID;
  100. case 22:
  101. return WRITE_MASK_REGISTER;
  102. case 23:
  103. return READ_WRITE_REGISTERS;
  104. case 0x85:
  105. return WRITE_COIL_ERROR;
  106. case 0x86:
  107. return WRITE_REGISTER_ERROR;
  108. case 0x8F:
  109. return WRITE_COILS_ERROR;
  110. case 0x90:
  111. return WRITE_REGISTERS_ERROR;
  112. default:
  113. throw new IllegalArgumentException();
  114. }
  115. }
  116. }