2021与蓝度共同重构项目,服务端
MercuryZ
2022-03-31 ef270bd1855b5ce3f398c5df024840a498e33a8f
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightPoleHeelingOperationReportInnerFrame.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
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/3/14 16:36
 */
@Data
@ToString(callSuper = true)
public class A5LightPoleHeelingOperationReportInnerFrame extends BaseResponseInnerFrame<A5LightPoleHeelingOperationReportInnerFrame> {
    //MAC地址
    private String mac;
    //响应状态
    // 0x00   æˆåŠŸ
    // 0x01   æ ¡éªŒç é”™è¯¯
    // 0x02   é•¿åº¦é”™è¯¯
    // 0x03   å†™Flash失败错误
    // 0xFF   å…¶ä»–错误
    private String state;
    @Override
    public A5LightPoleHeelingOperationReportInnerFrame transformFrame(String hex) {        //  é•¿åº¦ä¸ä¸€è‡´æ—¶ï¼Œè¿”回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));
        //MAC地址
        setMac(hex.substring(8, 12));
        //硬件交互响应结果
        setState(returnState(hex.substring(12, 14)));
        setCrc32(hex.substring(hex.length() - 8));
        //  æ ¡éªŒCRC32
        String frame = hex.substring(2, hex.length() - 8);
        this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
        return this;
    }
    public String returnState(String stateCode) {
        String State = "";
        switch (stateCode) {
            case "00":
                State = "操作成功";
                break;
            case "01":
                State = "校验码错误";
                break;
            case "02":
                State = "长度错误";
                break;
            case "03":
                State = "写Flash失败错误";
                break;
            case "FF":
                State = "其他错误";
                break;
            default:
        }
        return State;
    }
}