package com.sandu.ximon.admin.manager.iot.frame.inner.request; import cn.hutool.core.util.HexUtil; import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum; import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils; import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils; /** * @author ZZQ * @date 2022/4/1 10:37 */ public class C3QrCodeReqInnerFrame implements IRequestInnerFrame { private final String payload; public C3QrCodeReqInnerFrame(String c3Mac, String qrCodeData) { System.out.println("qrCodeData: " + qrCodeData); String encodeHexStr = HexUtil.encodeHexStr(qrCodeData).toUpperCase(); payload = c3Mac + encodeHexStr; } @Override public String getEncodeFrame() { String functionCode = C3ChargingEnum.QrCode.getCode(); //长度可变,不定长 String payloadLength = SupplementUtils.suppleZero(Integer.toHexString((payload.length() / 2)).toUpperCase(), 4); String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } }