2021与蓝度共同重构项目,服务端
liuhaonan
2022-02-14 37041ac6ae6baa2996f447e495f6f5280113c4a2
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
package com.sandu.ximon.admin.entity;
 
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils;
import com.sandu.ximon.admin.utils.HexStrConvertUtil;
 
/**
 * 数据传输接口命令(外设数据)(功能码A5)
 */
public class DataTransportMainFrame implements MainFrame {
 
    private MQTTConnectType mqttConnectType;
    //  功能码(1)
    private FunctionCode functionCode;
    //  命令类型(1)
    private DataTransportOrderType orderType;
    //  负荷长度(2)
    private String payloadLength;
    //  负荷数据(hex)
    private InnerFrame payload;
 
 
    DataTransportMainFrame(DataTransportOrderType orderType, InnerFrame payload){
        this.mqttConnectType = MQTTConnectType.SYNCHRONIZATION;
        this.functionCode = FunctionCode.DataTransportData;
        this.orderType = orderType;
        this.payloadLength = SupplementUtils.suppleZero(HexStrConvertUtil.tenToHex((payload.getCommand().length()/2)),4);
        this.payload = payload;
    }
 
    /**
     * 生成实体
     * @param orderType 数据传输命令类型
     * @param payload   负荷数据
     * @return
     */
    public static DataTransportMainFrame generateInstance(DataTransportOrderType orderType,InnerFrame payload) {
        return new DataTransportMainFrame(orderType, payload);
    }
 
 
    @Override
    public String getFrame() {
        String frame = this.functionCode.getCode() + this.orderType.getCode() + this.payloadLength + this.payload.getCommand();
        return this.mqttConnectType.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
    }
}