whychdw
2019-07-15 7453e58bae60fa07ff4d9b2bdb5c1d9e102066c1
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
package com.fbs9100;
 
import java.nio.ByteBuffer;
 
public class FBS_ResState implements Cloneable
{
    private final int BYTE_LEN = 38;
 
    public int         BattvolType;        //单体电压类型(12V-120,6V-60,2V-20)
    public int         EachGroupSum;        //每组单体数量
    public int        ResBattIndexMax;    //被测试单体的最大编号索引
    public int      ResBattIndex;        //被测试单体的索引
 
    public double    MonomerVol;            //当前被测单体电压(12.230V-12230)
    public double    MonomerRes;            //当前内阻(2.35mR-235)
    public double     MonomerCurr;        //当前电流(25.3A-253)
    public int      ResMaxIndex;        //最大内阻单体索引
    public int      ResMinIndex;        //最小内阻单体索引
    public double      ResMaxValue;        //最大内阻值
    public double      ResMinValue;        //最小内阻值
    public double    ResSumValueToSTD;    //内阻总和
    public double      ResAVGValue;        //平均内阻值
 
    public int       BattGroupNum;        //被测电池组号
    public int       ResTestState;        //当前工作状态:停止或工作
    public int         ResTestErrorCount;    //测试错误计数
    public int       ResReTestCount;        //出错后重试计数,上限为3次
    public int       BackUp;
    public FBS_TestTime Test_Time = new FBS_TestTime();            //测试工作时间
 
    public int        CRC;
 
    public FBS_ResState clone()
    {
        FBS_ResState obj = null;
        try
        {
            obj = (FBS_ResState)super.clone();
        }
        catch(CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return obj;
    }
 
    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);
        BattvolType = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        EachGroupSum = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        ResBattIndexMax = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        ResBattIndex = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        MonomerVol = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/1000;
        MonomerRes = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/100;
        MonomerCurr = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10;
        ResMaxIndex = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        ResMinIndex = FBS_ComBase.changeShortToInt(tmpbuf.getShort());
        ResMaxValue = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/100;
        ResMinValue = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/100;
 
        ResSumValueToSTD = (double)(tmpbuf.getInt()) / 100;
        ResAVGValue = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/100;
        BattGroupNum = FBS_ComBase.changeByteToInt(tmpbuf.get());
        ResTestState = FBS_ComBase.changeByteToInt(tmpbuf.get());
        ResTestErrorCount = FBS_ComBase.changeByteToInt(tmpbuf.get());
        ResReTestCount = FBS_ComBase.changeByteToInt(tmpbuf.get());
        BackUp = FBS_ComBase.changeByteToInt(tmpbuf.get());
 
        Test_Time.hour = FBS_ComBase.changeByteToInt(tmpbuf.get());
        Test_Time.minute = FBS_ComBase.changeByteToInt(tmpbuf.get());
        Test_Time.second = FBS_ComBase.changeByteToInt(tmpbuf.get());
 
        tmpbuf.compact();
        tmpbuf.flip();
 
        return true;
    }
}
/***************************************************************************************
 ***************************** end of file (FBS_ResState) *******************************
 ***************************************************************************************/