whyclj
2019-07-24 c9f8b9e09489e547734246140b4fd3635100fbb6
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
package com.fbs9100;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
 
public class FBS_ParamAlarm implements Cloneable
{
    private final int BYTE_LEN = 42;
    
    public double GroupVol_H = 56.4;                        //组端电压上限
    public double GroupVol_L = 51.0;                        //组端电压下限
    public double CHRG_CURR_H = 60.0;                        //充电电流上限
    public double DISC_CURR_H = 65.0;                        //放电电流上限
    public double MonomerVol_H = 2.300;                    //单体电压上限
    public double MonomerVol_L = 2.100;                    //单体电压下限
    public double Tmpe_H = 30.0;                            //温度上限
    public double Tmpe_L = 18.0;                            //温度下限
    public double Batt_RES = 1.0;                            //电池内阻
    public double Batt_CAP = 460.0;                        //电池容量
 
    public double MonomerTmp_H = 38.0;                    //单体温度上限
    //public double MonomerTmp_L = 12.0;                    //单体温度下限
    
    public double bakeup1 = 0.0;
    public double bakeup2 = 0.0;
    public double bakeup3 = 0.0;
    public double bakeup4 = 0.0;
    public double bakeup5 = 0.0;
    public double bakeup6 = 0.0;
    public double bakeup7 = 0.0;
    public double bakeup8 = 0.0;
    public double bakeup9 = 0.0;
    public double bakeup10 = 0.0;
    
    public int CRC = 0;
    
    public FBS_ParamAlarm clone()
    {
        FBS_ParamAlarm obj = null;  
        try
        {
            obj = (FBS_ParamAlarm)super.clone();
        }
        catch(CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return obj;
    }
    
    public void clear()
    {
        GroupVol_H = 0;
        GroupVol_L = 0;
        CHRG_CURR_H = 0;
        DISC_CURR_H = 0;
        MonomerVol_H = 0;
        MonomerVol_L = 0;
        MonomerTmp_H = 0;
        //MonomerTmp_L = 0;
        Tmpe_H = 0;
        Tmpe_L = 0;
        Batt_RES = 0;
        Batt_CAP = 0;
    }
    
    public boolean putByteBuffer(final ByteBuffer bf)
    {
        if(bf.limit() != BYTE_LEN)
            return false;
        
        ByteBuffer tmpbuf = bf;
        int crc0 = tmpbuf.getShort(BYTE_LEN-2) & 0xFFFF;
        int crc1 = FBS_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2);
        if(crc0 != crc1)
            return false;
        
        tmpbuf.position(0);
        GroupVol_H = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        GroupVol_L = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        CHRG_CURR_H = FBS_ComBase.changeShortToInt(tmpbuf.getShort())/10;
        DISC_CURR_H = FBS_ComBase.changeShortToInt(tmpbuf.getShort())/10;
        MonomerVol_H = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/1000;
        MonomerVol_L = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/1000;
        Tmpe_H = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        Tmpe_L = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        Batt_RES = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/100;
        Batt_CAP = FBS_ComBase.changeShortToDouble(tmpbuf.getShort());
        
        bakeup1 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup2 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup3 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup4 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup5 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup6 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup7 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup8 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup9 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup10 = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        
        tmpbuf.compact();
        tmpbuf.flip();
        
        return true;
    }
    
    public ByteBuffer getByteBuffer()
    {
        ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN);
        bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(GroupVol_H*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(GroupVol_L*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(CHRG_CURR_H*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(DISC_CURR_H*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(MonomerVol_H*1000));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(MonomerVol_L*1000));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(Tmpe_H*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(Tmpe_L*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(Batt_RES*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(Batt_CAP));
        
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup1));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup2));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup3));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup4));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup5));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup6));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup7));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup8));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup9));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(bakeup10));
        
        CRC = FBS_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
        bytebuffer.putShort(FBS_ComBase.changeIntToShort(CRC));
        
        bytebuffer.flip();
        
        return bytebuffer;
    }
}
/***************************************************************************************
****************************** end of file (FBS_AlarmParam) ****************************
***************************************************************************************/