package com.sandu.ximon.admin.manager.iot.frame.inner.report; import cn.hutool.core.util.StrUtil; import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils; import lombok.Data; import lombok.ToString; /** * 大气设备心跳包间隔时间 * * @author ZZQ * @date 2022/8/1 10:17 */ //FEA584000C FE 02 0004 FFFF 003C B081260C CC1C105D @Data @ToString(callSuper = true) public class A5AtmosphereHeartBeatTimeReportInnerFrame extends BaseResponseInnerFrame { //间隔时间 private int intervalTime; //设备地址 private String deviceAddress; @Override public A5AtmosphereHeartBeatTimeReportInnerFrame transformFrame(String hex) { // 长度不一致时,返回null if (StrUtil.isBlank(hex) || hex.length() != 24) { System.out.println("数据校验异常!"); return null; } // MQTT通信方式(1) setConnectType(hex.substring(0, 2)); // 功能码(1) setFunctionCode(hex.substring(2, 4)); // 负荷长度(2) setPayloadLength(hex.substring(4, 8)); //设备地址 setDeviceAddress(hex.substring(8, 12)); //心跳包间隔时间 setIntervalTime(Integer.parseInt(hex.substring(12, 16), 16)); setCrc32(hex.substring(hex.length() - 8)); // 校验CRC32 String frame = hex.substring(2, hex.length() - 8); this.setValidate(CRC32Utils.validateFrame(frame, getCrc32())); return this; } }