lxw
2023-03-02 2ebf5324ac4e7dd23f4857e7080d25d40065b86c
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
package com.whyc.abe;
 
import com.whyc.constant.ComBase;
import com.whyc.constant.Crc16;
 
import java.nio.ByteBuffer;
 
/**
 *     放电数据的数据头
 * @author LiJun
 *
 */
public class ABEDisDataHeadStart implements ABEDataHeadStart{
    public static final int BYTE_LEN = 44;
    
    public int hourRate;                   //小时率 固定为10
    public float disCurr;                //放电电流参数 x/10 A
    public int  disCap;                 //测试容量    x AH
    public int  disTime;                //测试时间
    public float groupVol_LOW;           //放电下限    x/1000 V
    public float monomerVol_LOW;        //放电下限    x/1000 V
    public int  monomerLowCount;        //下限个数 固定为1
    public int  battGroupNum;           //电池组数 固定为1
    public int  onlineVolLowAction;        //无用
    public int  staticTime;                //无用
    public int  disTestCount;              //无用
    public int  dCVolHighLimit;            //无用
 
    public int  battNum;                //电池编号
    public int  battVolStyle;            //无用
    public int  std_CAP;                //标称容量 x AH
 
    public int  testcap;                //已测容量 x AH 同 DisCap
    public int  bakeup6;
    public int  bakeup7;
    public int  bakeup8;
    public int  bakeup9;
    public int  bakeup10;
 
    public int  CRC;
 
    @Override
    public boolean  setDataInf(ByteBuffer bf) {
        //System.out.println("头部数据长度异常"+bf.remaining());
        if(bf.limit() < BYTE_LEN) {
            return false;
        }
        int crc0 = bf.getShort(BYTE_LEN-2) & 0xFFFF;
        int crc1 = Crc16.CalCRC16(bf, BYTE_LEN-2);
        if(crc0 != crc1) {
            //校验CRC
            //System.out.println(crc0 + "==" + crc1);
            return false;
        }
        
        bf.position(0);
        
        this.hourRate = ComBase.changeShortToInt(bf.getShort());                       //小时率 固定为10
        this.disCurr = ComBase.changeShortToFloat(bf.getShort())/10;                //放电电流参数 x/10 A
        this.disCap = ComBase.changeShortToInt(bf.getShort());                         //测试容量    x AH
        this.disTime = ComBase.changeShortToInt(bf.getShort());                        //测试时间
        this.groupVol_LOW = ComBase.changeShortToFloat(bf.getShort())/1000;           //放电下限    x/1000 V
        this.monomerVol_LOW = ComBase.changeShortToFloat(bf.getShort())/1000;        //放电下限    x/1000 V
        this.monomerLowCount = ComBase.changeShortToInt(bf.getShort());                //下限个数 固定为1
        this.battGroupNum = ComBase.changeShortToInt(bf.getShort());                   //电池组数 固定为1
        this.onlineVolLowAction = ComBase.changeShortToInt(bf.getShort());            //无用
        this.staticTime = ComBase.changeShortToInt(bf.getShort());                    //无用
        this.disTestCount = ComBase.changeShortToInt(bf.getShort());                  //无用
        this.dCVolHighLimit = ComBase.changeShortToInt(bf.getShort());                //无用
 
        this.battNum = ComBase.changeShortToInt(bf.getShort());                        //电池编号
        this.battVolStyle = ComBase.changeShortToInt(bf.getShort());                //无用
        this.std_CAP = ComBase.changeShortToInt(bf.getShort());                        //标称容量 x AH
 
        this.testcap = ComBase.changeShortToInt(bf.getShort());                        //已测容量 x AH 同 DisCap
        this.bakeup6 = ComBase.changeShortToInt(bf.getShort());
        this.bakeup7 = ComBase.changeShortToInt(bf.getShort());
        this.bakeup8 = ComBase.changeShortToInt(bf.getShort());
        this.bakeup9 = ComBase.changeShortToInt(bf.getShort());
        this.bakeup10 = ComBase.changeShortToInt(bf.getShort());
 
        this.CRC = ComBase.changeShortToInt(bf.getShort());
        
        //System.out.println(this);
        
        bf.compact();
        bf.flip();
        return true;
    }
 
    @Override
    public int getBattGroupNum() {
        return this.battGroupNum;
    }
 
    @Override
    public String toString() {
        return "ABEDisDataHeadStart [HourRate=" + hourRate + ", DisCurr=" + disCurr + ", DisCap=" + disCap
                + ", DisTime=" + disTime + ", GroupVol_LOW=" + groupVol_LOW + ", MonomerVol_LOW=" + monomerVol_LOW
                + ", MonomerLowCount=" + monomerLowCount + ", BattGroupNum=" + battGroupNum + ", OnlineVolLowAction="
                + onlineVolLowAction + ", StaticTime=" + staticTime + ", DisTestCount=" + disTestCount
                + ", DCVolHighLimit=" + dCVolHighLimit + ", BattNum=" + battNum + ", BattVolStyle=" + battVolStyle
                + ", STD_CAP=" + std_CAP + ", testcap=" + testcap + ", bakeup6=" + bakeup6 + ", bakeup7=" + bakeup7
                + ", bakeup8=" + bakeup8 + ", bakeup9=" + bakeup9 + ", bakeup10=" + bakeup10 + ", CRC=" + CRC + "]";
    }
    
    
}