Administrator
2023-05-16 7a49155f41a11c93b692b120705432e04323cd1d
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
package com.fgkj.fbs5100;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
 
 
public class FBS5100_AlarmParam {
    private final int BYTE_LEN = 32;
    
    public float Batt_CAP = 0;
    public float GroupVol_H = 0;
    public float GroupVol_L = 0;
    public float AC_VOL_H = 0;
    public float AC_VOL_L = 0;
    
    public float bakeup1 = 0;
    public float bakeup2 = 0;
    public float bakeup3 = 0;
    public float bakeup4 = 0;
    public float bakeup5 = 0;
    public float bakeup6 = 0;
    public float bakeup7 = 0;
    public float bakeup8 = 0;
    public float bakeup9 = 0;
    public float bakeup10 = 0;
    
    public int CRC = 0;
    
    public FBS5100_AlarmParam clone()
    {
        FBS5100_AlarmParam obj = null;  
        try
        {
            obj = (FBS5100_AlarmParam)super.clone();
        }
        catch(CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return obj;
    }
    
    public void clear()
    {
        GroupVol_H = 0;
        GroupVol_L = 0;
        AC_VOL_H = 0;
        AC_VOL_L = 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 = FBS5100_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2);
        if(crc0 != crc1) {
            System.err.println("FBS5100_AlarmParam:"+crc0+"=="+crc1);
            return false;
        }
        tmpbuf.position(0);
        Batt_CAP = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort());
        GroupVol_H = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
        GroupVol_L = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
        AC_VOL_H = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
        AC_VOL_L = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
        
        bakeup1 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup2 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup3 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup4 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup5 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup6 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup7 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup8 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup9 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        bakeup10 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
        
        CRC = FBS5100_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(FBS5100_ComBase.changeDoubleToShort(Batt_CAP));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(GroupVol_H*10));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(GroupVol_L*10));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(AC_VOL_H*10));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(AC_VOL_L*10));
        
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup1));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup2));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup3));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup4));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup5));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup6));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup7));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup8));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup9));
        bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup10));
        
        CRC = FBS5100_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
        bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(CRC));
        
        bytebuffer.flip();
        
        return bytebuffer;
    }
 
    @Override
    public String toString() {
        return "FBS5100_AlarmParam [BYTE_LEN=" + BYTE_LEN + ", Batt_CAP=" + Batt_CAP + ", GroupVol_H=" + GroupVol_H
                + ", GroupVol_L=" + GroupVol_L + ", AC_VOL_H=" + AC_VOL_H + ", AC_VOL_L=" + AC_VOL_L + "]";
    }
    
    
}