2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-03-15 61ef68c831fc4d8266121a6b11b5f751ae7d1266
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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
 * C3充电桩操作指令响应帧
 */
@Data
@ToString(callSuper = true)
public class A5C3OperationReportInnerFrame extends BaseResponseInnerFrame<A5C3OperationReportInnerFrame> {
    //MAC地址
    private String mac;
    //响应状态
    //        故障码类型表:
    //        1.通信流程超时
    //        2.无电压
    //        3.无电流
    //        4.无功率
    //        5.充电功率过小
    //        6.漏电
    //        7.设备温度过高
    //        8.设备温度过低
    //        9.充电超时(充电功率过小导至充电时间超长)
    //        10.无网络
    //        11.连接主机超时
    //        12.连接服务器超时
    //        13.触摸屏无响应
    //        14.更新写入Flash失败
    //        15.写入EEProm失败
    //        16.市电电压过高警告
    //        17.市电电压过底警告
    //        18.地锁故障(当前为解锁状态,不能锁上)
    //        19.地锁故障(当前为锁上状态,不能解锁)
    //        20.充电口1故障(不能使用)
    //        21.充电口2故障(不能使用)(暂不用)
    //        22. 充电口1无法与车机通讯
    //        23. 充电口2无法与车机通讯(暂不用)
    private String state;
 
    @Override
    public A5C3OperationReportInnerFrame 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, 16));
        //硬件交互响应结果
        setState(returnState(hex.substring(16, 18)));
 
        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 = "无电流";
                break;
            case "04":
                State = "无功率";
                break;
            case "05":
                State = "充电功率过小";
                break;
            case "06":
                State = "漏电";
                break;
            case "07":
                State = "设备温度过高";
                break;
            case "08":
                State = "设备温度过低";
                break;
            case "09":
                State = "充电超时(充电功率过小导至充电时间超长)";
                break;
            case "10":
                State = "无网络";
                break;
            case "11":
                State = "连接主机超时";
                break;
            case "12":
                State = "连接服务器超时";
                break;
            case "13":
                State = "触摸屏无响应";
                break;
            case "14":
                State = "更新写入Flash失败";
                break;
            case "15":
                State = "写入EEProm失败";
                break;
            case "16":
                State = "市电电压过高警告";
                break;
            case "17":
                State = "市电电压过底警告";
                break;
            case "18":
                State = "地锁故障(当前为解锁状态,不能锁上)";
                break;
            case "19":
                State = "地锁故障(当前为锁上状态,不能解锁)";
                break;
            case "20":
                State = "充电口1故障(不能使用)";
                break;
            case "21":
                State = "充电口2故障(不能使用)(暂不用)";
                break;
            case "22":
                State = "充电口1无法与车机通讯";
                break;
            case "23":
                State = "充电口2无法与车机通讯(暂不用)";
            default:
        }
        return State;
    }
}