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.A7PlcDataEnum; 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; /** * 单灯心跳包设置 */ public class A7PlcSettingHeartBeatTimeReqInnerFrame implements IRequestInnerFrame { private final String payload; public A7PlcSettingHeartBeatTimeReqInnerFrame(Integer sec) { String secHex; String destinationAddress = "FFFF"; if(sec < HexUtil.hexToInt("FFFF")) { secHex = HexUtil.toHex(sec); }else { secHex = "FFFF"; } payload = destinationAddress + SupplementUtils.suppleZero(Integer.toHexString(sec).toUpperCase(), 4); } @Override public String getEncodeFrame() { String functionCode = A7PlcDataEnum.SetHeartBeatTime.getCode(); String payloadLength = "0004"; String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } }