package com.sandu.ximon.admin.manager.iot.frame.inner.request; import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5LightDataEnum; 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; /** * @author van * A7->01->23 * 定时控灯 * 0x00:关灯 * 其它:开灯&亮度值" */ public class A7PlcTimerReqInnerFrame implements IRequestInnerFrame { private final String payload; private final String functionCode = A7PlcDataEnum.PlcTimer.getCode(); private final String payloadLength; /** * @param framePayload 多个路灯定时指令, */ public A7PlcTimerReqInnerFrame(String framePayload, String lightAddress) { String destinationAddress; if (lightAddress == null || (!lightAddress.equals("0001") && !lightAddress.equals("0002") && !lightAddress.equals("0003"))) { destinationAddress = "FFFF"; } else { destinationAddress = lightAddress; } payload = destinationAddress + framePayload; this.payloadLength = SupplementUtils.suppleZero(Integer.toHexString((payload.length() / 2)).toUpperCase(), 4); } @Override public String getEncodeFrame() { String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } }