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 chenjiantian * @date 2021/12/6 18:20 * A5-82-40/41/43/44 * c3充电桩 上报 网络请求/二维码请求/上报充电结束/上报充电中断 */ @Data @ToString(callSuper = true) public class A5C3CommonReportInnerFrame extends BaseResponseInnerFrame { // 目标地址 4 private String destinationAddress; private String mcuUdid; @Override public A5C3CommonReportInnerFrame transformFrame(String hex) { //FEA582000CF04100040000048EE4FC6C507D9BE44D // 长度不一致时,返回null if (StrUtil.isBlank(hex)) { return null; } // MQTT通信方式(1) setConnectType(hex.substring(0, 2)); // 功能码(1) setFunctionCode(hex.substring(2, 4)); // 负荷长度(2) setPayloadLength(hex.substring(4, 8)); setDestinationAddress(hex.substring(8, 16)); /** * 设置mcu_udid */ if(getFunctionCode().equals("40")){ setMcuUdid(hex.substring(16, hex.length() - 8)); } setCrc32(hex.substring(hex.length() - 8)); // 校验CRC32 String frame = hex.substring(2, hex.length() - 8); this.setValidate(CRC32Utils.validateFrame(frame, getCrc32())); return this; } }