liurunyu
2024-12-02 847c9a21a5056884a77443c9d5f1f08919db0a79
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
package com.dy.common.softUpgrade.state;
 
import com.alibaba.fastjson2.annotation.JSONField;
import com.dy.common.mw.protocol.Command;
import com.dy.common.util.Callback;
import lombok.Data;
 
/**
 * @Author: liurunyu
 * @Date: 2024/11/11 17:33
 * @Description
 */
@Data
public class UpgradeRtu {
 
    @JSONField(serialize = false)
    public static final int STATE_OFFLINE = -1 ;//-1-离线
    @JSONField(serialize = false)
    public static final int STATE_UNSTART = 0 ;//0-未开始
    @JSONField(serialize = false)
    public static final int STATE_RUNNING = 1 ;//1-升级中
    @JSONField(serialize = false)
    public static final int STATE_SUCCESS = 2 ;//2-升级成功
    @JSONField(serialize = false)
    public static final int STATE_FAILONE = 3 ;//3-升级失败(一包死)
    @JSONField(serialize = false)
    public static final int STATE_FAIL = 4 ;//4-升级失败(多包死)
    @JSONField(serialize = false)
    public static final int STATE_FAILOFFLINE = 5 ;//4-升级失败(离线)
    @JSONField(serialize = false)
    public static final int RAMADDRADD = 0x200 ;//程序存储内存在址增量
 
    public String rtuAddr ;
    public int state ;// -1-离线,0-未开始,1-升级中,2-升级成功,3-升级失败(1包死),4-升级失败(非1包死),5-升级失败(离线)
    public int totalPackage ;// 总包数
    public int currentPackage ;// 当前下发升级包数
    public int currentRamAddr ;// 当前下发升级包RTU存储地址
    public String lastDownDt ;// 最后下发升级数据包时间(yyyy-mm-dd HH:HH:SS)
    public int reTryTimes ;//升级不成功,重试次数
    public boolean isOver ;//是否升级过程结束,1:结束,0:未结束
 
    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append("RTU(" + rtuAddr + ")升级状态:") ;
        sb.append("  \n当  前  状  态:" + getStateName(state)) ;
        sb.append("  \n需下发数据包总数:" + totalPackage) ;
        sb.append("  \n当前下发升级包数:" + currentPackage) ;
        sb.append("  \n当前下发存储地址:" + currentRamAddr) ;
        sb.append("  \n当前下发数据时间:" + lastDownDt) ;
        sb.append("  \n升级失败重试次数:" + reTryTimes) ;
        sb.append("  \n升级过程是否结束:" + (isOver?"是":"否")) ;
        return sb.toString() ;
    }
 
    public static String getStateName(int state){
        switch (state) {
            case STATE_OFFLINE:
                return "离线";
            case STATE_UNSTART:
                return "未开始";
            case STATE_RUNNING:
                return "升级中";
            case STATE_SUCCESS:
                return "升级成功";
            case STATE_FAILONE:
                return "一包死";
            case STATE_FAIL:
                return "多包死";
            case STATE_FAILOFFLINE:
                return "离线失败";
            default:
                return "未知";
        }
    }
 
    /**
     * 触发升级
     * @param code
     * @param softData
     * @param callbackCom
     */
    public void trigger(String code,
                        String protocolName,
                        Short protocolVersion,
                        byte[][] softData,
                        Callback callbackCom){
        return ;
    }
 
    public Command createCommand1601(String protocolName,
                                     Short protocolVersion){
        return null ;
    }
 
    public Command createCommand1602(String protocolName,
                                     Short protocolVersion,
                                     int currentPackage,
                                     Integer ramAddr,
                                     byte[][] softData){
        return null ;
    }
 
    public Command createCommand1603(String protocolName,
                                     Short protocolVersion){
        return null ;
    }
 
    public Command createCommand1600(String protocolName,
                                     Short protocolVersion){
        return null ;
    }
}