xiuwei 2 anni fa
parent
commit
d461184381

+ 5 - 1
protocol-modbus/src/main/java/wei/yigulu/modbus/domain/datatype/ModbusDataTypeEnum.java

@@ -41,7 +41,9 @@ public enum ModbusDataTypeEnum {
 	/*CDAB 的modbus 4 字节  浮点数据*/
 	CDAB(2),
 	/*DCBA 的modbus 4 字节  浮点数据*/
-	DCBA(2);
+	DCBA(2),
+	/*未知类型*/
+	UNKNOW(1);
 
 
 	/**
@@ -81,6 +83,8 @@ public enum ModbusDataTypeEnum {
 				return new BADC();
 			case A16:
 				return new BooleanModbusDataInRegister();
+			case UNKNOW:
+				return new UnknownTypeRegisterValue();
 			default:
 				return new P_AB();
 		}

+ 60 - 0
protocol-modbus/src/main/java/wei/yigulu/modbus/domain/datatype/UnknownTypeRegisterValue.java

@@ -0,0 +1,60 @@
+package wei.yigulu.modbus.domain.datatype;
+
+
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * AB +AB 数据类型
+ *
+ * @author: xiuwei
+ * @version:
+ */
+@NoArgsConstructor
+public class UnknownTypeRegisterValue extends RegisterValue {
+
+	Register  register=new Register();
+
+	{
+		super.modbusDataTypeEnum = ModbusDataTypeEnum.UNKNOW;
+	}
+
+
+	public byte getB1(){
+		return register.getB1();
+	}
+
+	public byte getB2(){
+		return register.getB2();
+	}
+
+	@Override
+	public List<Register> getRegisters() {
+		List<Register> l=new ArrayList<>();
+		l.add(this.register);
+		return l;
+	}
+
+	@Override
+	public UnknownTypeRegisterValue decode(byte[] bytes, int offset) {
+		this.register=new Register(bytes[offset*2],bytes[offset*2+1]);
+		return this;
+	}
+
+	@Override
+	public UnknownTypeRegisterValue decode(ByteBuffer byteBuf) {
+		this.register=new Register(byteBuf.get(),byteBuf.get());
+		return this;
+	}
+
+	@Override
+	public UnknownTypeRegisterValue encode(List<Byte> bytes) {
+		bytes.add(this.register.getB1());
+		bytes.add(this.register.getB2());
+		return this;
+	}
+}