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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
package com.fbs9100;
 
import android.util.Log;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
 
public class FBS_ParamBatt implements Cloneable
{
    private final int BYTE_LEN = 44;
    
    public double STD_CAP = 0.0;                                //标称容量
    public double STD_RES = 0.0;                                //标称内阻
    public int BattGroupCount = 0;                            //电池组数
    public int EachGroupBattCount = 0;                        //每组电池单体数目
    public double MonomerVol = 0.0;                            //单体标称电压
    public double GroupVol = 0.0;                                //电池组端标称电压
    public double BattTemp = 0.0;                                //电池标称温度
    public double FloatChargeVol = 0.0;                        //电池浮充电压阀值
    public double FloatChargeCurr = 0.0;                        //电池浮充电流阀值
    public double OnlineVolLow = 0.0;                        //在线电压低阀值
    public int GroupConnType = 0;                                //电池组连接类型
    
    public double bakeup1 = 0;
    public double bakeup2 = 0;
    public double bakeup3 = 0;
    public double bakeup4 = 0;
    public double bakeup5 = 0;
    public double bakeup6 = 0;
    public double bakeup7 = 0;
    public double bakeup8 = 0;
    public double bakeup9 = 0;
    public double bakeup10 = 0;
    
    public int CRC = 0;
    
    public FBS_ParamBatt clone()
    {
        FBS_ParamBatt obj = null;  
        try
        {
            obj = (FBS_ParamBatt)super.clone();
        }
        catch(CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return obj;
    }
    
    public void clear()
    {
        STD_CAP = 0.0;
        STD_RES = 0.0;
        BattGroupCount = 0;
        EachGroupBattCount = 0;
        MonomerVol = 0.0;
        GroupVol = 0.0;
        BattTemp = 0.0;
        FloatChargeVol = 0.0;
        FloatChargeCurr = 0.0;
        OnlineVolLow = 0.0;
        GroupConnType = 0;
        
        bakeup1 = 0;
        bakeup2 = 0;
        bakeup3 = 0;
        bakeup4 = 0;
        bakeup5 = 0;
        bakeup6 = 0;
        bakeup7 = 0;
        bakeup8 = 0;
        bakeup9 = 0;
        bakeup10 = 0;
        
        CRC = 0;
    }
 
    /**
     * 将bytebuffer中的数据取出放入该对象的属性中,并返回是否取出成功
     * @param bf
     * @return
     */
    public boolean putByteBuffer(final ByteBuffer bf)
    {
        if(bf.limit() < BYTE_LEN) {
            Log.i("电池参数", "putByteBuffer:长度错误"+bf.limit());
            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) {
            Log.i("电池参数", "putByteBuffer:长度错误:" + crc0 + "=="+crc1);
            return false;
        }
        tmpbuf.position(0);
        STD_CAP = FBS_ComBase.changeShortToDouble(tmpbuf.getShort());
        STD_RES = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/100;
        BattGroupCount = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        EachGroupBattCount = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        MonomerVol = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        GroupVol = FBS_ComBase.changeShortToDouble(tmpbuf.getShort());
        BattTemp = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        FloatChargeVol = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        FloatChargeCurr = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        OnlineVolLow = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        GroupConnType = FBS_ComBase.changeShortToInt(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(STD_CAP));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(STD_RES*100));
        bytebuffer.putShort(FBS_ComBase.changeIntToShort(BattGroupCount));
        bytebuffer.putShort(FBS_ComBase.changeIntToShort(EachGroupBattCount));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(MonomerVol*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(GroupVol));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(BattTemp*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(FloatChargeVol*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(FloatChargeCurr*10));
        bytebuffer.putShort(FBS_ComBase.changeDoubleToShort(OnlineVolLow*10));
        bytebuffer.putShort(FBS_ComBase.changeIntToShort(GroupConnType));
        
        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_BattParam) *****************************
***************************************************************************************/