package com.zy.acs.common.domain.protocol; import com.zy.acs.common.constant.CommonConstant; import com.zy.acs.framework.common.RadixTools; import com.zy.acs.common.utils.Utils; import lombok.Data; import java.io.Serializable; /** * 故障数据包 */ @Data public class AGV_04_UP implements IMessageBody, Serializable { private static final long serialVersionUID = -3819292912811534508L; @Override public byte[] writeToBytes() { return Utils.merge( Utils.reverse(RadixTools.shortToByte((short) this.faultId)) , Utils.reverse(RadixTools.hexStringToBytes(this.hexFaultId)) , (byte) this.faultStatus , (byte) this.faultLevel , Utils.reverse(RadixTools.intToBytes(this.data1)) , Utils.reverse(RadixTools.intToBytes(this.data2)) , Utils.reverse(RadixTools.intToBytes(Integer.parseInt(this.qrCode))) ); } @Override public void readFromBytes(byte[] bytes) { //故障ID this.faultId = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, 0, 2)); this.hexFaultId = RadixTools.bytesToHexStr(Utils.sliceWithReverse(bytes, 0, 2)); //故障状态 this.faultStatus = Utils.slice(bytes, 2, 1)[0]; //故障等级 this.faultLevel = Utils.slice(bytes, 3, 1)[0]; //故障数据1 this.data1 = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 4, 4)); //故障数据2 this.data2 = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 8, 4)); // //故障标志位 // this.flag = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 12, 4)); //地面码ID this.qrCode = Utils.zeroFill(String.valueOf(RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 12, 4))), CommonConstant.QR_CODE_LEN);; } //故障ID private int faultId; //故障ID Hex版 private String hexFaultId; //故障状态 private int faultStatus; //故障等级 private int faultLevel; //故障数据1 private int data1; //故障数据2 private int data2; //地面码ID private String qrCode; }