whyclj
2019-10-22 9e45b70bcb3dd1c3a54b4feb362bd2182a6d11d6
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
165
166
167
168
169
170
171
172
173
174
package com.mode;
 
import android.util.Log;
 
import com.util.FBS_ComBase;
 
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;
 
public class BattTestParam {
    private final int BYTE_LEN = 52;
 
    public String battName = "";        //电池组名称
    public byte[] byteName;                //电池组名称字节数组
 
    public int param_index;                //预置索引号
    //public int testMode;                //测试模式    0:离线        1:在线
    //public int powerOffAction;        //市电中断处理   0:继续放电    1:停止放电
 
    public int battStdCap;                //电池组标称容量
    public int hourState;                //放电小时率    1、2、3、4、5、6、7、8、9、10、20
    public double disChargeCurr;        //放电电流(0.1A)
    public int disChargeCap;            //放电容量(1AH)
    public int disTime;                    //放电时长(min)
    public double monVolLow;            //单体下限(0.01V)
    public double groupVolLow;            //组端下限(0.1V)
    public int monCount;                //每组单体数(每组电池节数)0~240
    public int groupCount;                //电池组组数(1~4)
    public int monVolLowCount;            //单体下限数量(0~240)
    //public int saveInterval;            //数据保存间隔min
    //public double dcVolHighLimit;        //升压上限(0.1V)
    public double mon_vol;              //单体电压
    //public double chargeCurr;            //充电电压(在线阈值)A
    public int testType;                //测试类型(0:恒电流    1:恒功率      2:恒电阻)
    public double dischargePower;        //预放功率(0.1kw)
 
    public double chargeCurr;            //充电电流(0.1A)
    public double chargeVol;            //充电电压(0.1V)
    public double floatVol;                //浮充电压(0.1V)
    //public double chargeCap;            //充电容量
    public int chargeTime;                //充电时长(min)
    public int floatTime;                //浮充时长(min)
    public double chargeStopCurr;        //截止电流(0.1A)
    public double groupHighVol;            //组端上限(0.1V)
    public double monHighVol;            //单体上限(0.01V)
    public int monHighVolCount;            //单体上限数量
    //public double chargeHighTmp;        //充电过温
    //public double dischargeHighTmp;    //放电过温
 
    public int cycleStart;                //活化起点     0放电 ,1充电
    public int cycleTimes;                //活化次数     1-50次
    public int waitdisTime;                //充完静置    0-500分钟
    public int waitchrTime;                //放完静置    0-500分钟
 
    public boolean putByteBuffer(ByteBuffer bf) {
        if(bf.limit()<BYTE_LEN) {
            Log.e("BattTestParam", bf.limit()+"putByteBuffer: "+BYTE_LEN);
            return false;
        }
        ByteBuffer tmpbuf = bf;
        tmpbuf.position(0);
 
        battStdCap = FBS_ComBase.changeShortToInt(bf.getShort());                //标称容量
        hourState  = FBS_ComBase.changeShortToInt(bf.getShort());                //小时率
        disChargeCurr = FBS_ComBase.changeShortToDouble(bf.getShort())/10;        //放电电流
        disChargeCap = FBS_ComBase.changeShortToInt(bf.getShort());                //放电容量
        disTime = FBS_ComBase.changeShortToInt(bf.getShort());                    //放电时长
        monVolLow = FBS_ComBase.changeShortToDouble(bf.getShort())/100;            //单体下限阀值
        groupVolLow = FBS_ComBase.changeShortToDouble(bf.getShort())/10;        //组端下限
        monCount = FBS_ComBase.changeShortToInt(bf.getShort());                    //每组单体数量
        groupCount = FBS_ComBase.changeShortToInt(bf.getShort());                //电池组组数
        monVolLowCount = FBS_ComBase.changeShortToInt(bf.getShort());            //单体下限数量
        //dcVolHighLimit = FBS_ComBase.changeShortToDouble(bf.getShort())/10;        //升压上限
        mon_vol = FBS_ComBase.changeShortToDouble(bf.getShort())/10;               //单体电压
        testType = FBS_ComBase.changeShortToInt(bf.getShort());                    //测试类型
        dischargePower = FBS_ComBase.changeShortToDouble(bf.getShort())/10;        //预放功率
 
        chargeCurr = FBS_ComBase.changeShortToDouble(bf.getShort())/10;            //充电电流
        chargeVol = FBS_ComBase.changeShortToDouble(bf.getShort())/10;            //充电电压
        floatVol = FBS_ComBase.changeShortToDouble(bf.getShort())/10;            //浮充电压
        chargeTime = FBS_ComBase.changeShortToInt(bf.getShort());                //充电时长
        floatTime = FBS_ComBase.changeShortToInt(bf.getShort());                //浮充时长
        chargeStopCurr = FBS_ComBase.changeShortToDouble(bf.getShort())/10;        //截止电流
        groupHighVol = FBS_ComBase.changeShortToDouble(bf.getShort())/10;        //组端上限
        monHighVol = FBS_ComBase.changeShortToDouble(bf.getShort())/100;        //单体上限
        monHighVolCount = FBS_ComBase.changeShortToInt(bf.getShort());            //单体上限数量
 
        cycleStart = FBS_ComBase.changeShortToInt(bf.getShort());                //活化起点
        cycleTimes = FBS_ComBase.changeShortToInt(bf.getShort());                //活化次数
        waitdisTime = FBS_ComBase.changeShortToInt(bf.getShort());                //充完静置
        waitchrTime = FBS_ComBase.changeShortToInt(bf.getShort());                //放完静置
 
        return true;
    }
 
    /**
     * 获取新建电池组的数据
     * @return
     */
    public ByteBuffer getNewBattByteBuffer() {
 
        byte[] b = null;
        try {
            b = battName.getBytes("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        int byteCount = b.length<20?b.length:20;
        ByteBuffer tmpbuf = ByteBuffer.allocate(byteCount);
        tmpbuf.order(ByteOrder.LITTLE_ENDIAN);
 
        tmpbuf.position(0);
        for(int i = 0;i<b.length && i<20;i++) {
            tmpbuf.put(FBS_ComBase.changeIntToByte(b[i]));
        }
        //System.out.println(ComFn.bytesToHexString(b, b.length));;
        return tmpbuf;
    }
 
    public ByteBuffer getByteBuffer() {
        ByteBuffer tmpbuf = ByteBuffer.allocate(BYTE_LEN);
        tmpbuf.order(ByteOrder.LITTLE_ENDIAN);
 
        tmpbuf.position(0);
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(battStdCap));                //标称容量
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(hourState));                //小时率
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(disChargeCurr*10));        //放电电流
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(disChargeCap));            //放电容量
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(disTime));                    //放电时长
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(monVolLow*100));        //单体下限阀值
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(groupVolLow*10));        //组端下限
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(monCount));                //每组单体数量
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(groupCount));                //电池组组数
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(monVolLowCount));            //单体下限数量
        //tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(dcVolHighLimit*10));    //升压上限
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(mon_vol*10));                //单体电压
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(testType));                //测试类型
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(dischargePower*10));    //预放功率
 
 
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(chargeCurr*10));        //充电电流
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(chargeVol*10));            //充电电压
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(floatVol*10));            //浮充电压
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(chargeTime));                //充电时长
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(floatTime));                //浮充时长
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(chargeStopCurr*10));    //截止电流
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(groupHighVol*10));        //组端上限
        tmpbuf.putShort(FBS_ComBase.changeDoubleToShort(monHighVol*100));        //单体上限
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(monHighVolCount));            //单体上限数量
 
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(cycleStart));                //活化起点
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(cycleTimes));                //活化次数
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(waitdisTime));                //充完静置
        tmpbuf.putShort(FBS_ComBase.changeIntToShort(waitchrTime));                //放完静置
        tmpbuf.flip();
        return tmpbuf;
    }
 
    @Override
    public String toString() {
        return "DischargeParam [battName=" + battName + ", byteName=" + Arrays.toString(byteName) + ", param_index="
                + param_index + ", battStdCap=" + battStdCap + ", hourState=" + hourState + ", disChargeCurr="
                + disChargeCurr + ", disChargeCap=" + disChargeCap + ", disTime=" + disTime + ", monVolLow=" + monVolLow
                + ", groupVolLow=" + groupVolLow + ", monCount=" + monCount + ", groupCount=" + groupCount
                + ", monVolLowCount=" + monVolLowCount + ", mon_vol=" + mon_vol + ", testType=" + testType
                + ", dischargePower=" + dischargePower + ", chargeCurr=" + chargeCurr + ", chargeVol=" + chargeVol
                + ", floatVol=" + floatVol + ", chargeTime=" + chargeTime + ", floatTime=" + floatTime
                + ", chargeStopCurr=" + chargeStopCurr + ", groupHighVol=" + groupHighVol + ", monHighVol=" + monHighVol
                + ", monHighVolCount=" + monHighVolCount + ", cycleStart=" + cycleStart + ", cycleTimes=" + cycleTimes
                + ", waitdisTime=" + waitdisTime + ", waitchrTime=" + waitchrTime + "]";
    }
}