whyclj
2019-11-11 dd4d4e91cdfb9806155d7dedca8907ef4fb67ae7
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
package com.concentrator;
 
import com.util.ComBase;
 
import java.nio.ByteBuffer;
 
/**
 *   汇集器参数
 */
public class Concentrator_Param {
    public final static int REG_COUNT = 17;                 //寄存器数量
 
    public int dev_addr;                    //设备地址
    public int first_monCount;              //第一路单体数目
    public int second_monCount;             //第二路单体数目
    public int thrid_monCount;              //第三路单体数目
    public int fourth_monCount;             //第四路单体数目
    public int fifth_monCount;              //第五路单体数目
    public int curr_range;                  //电流钳量程
    public double float_currLimit;          //浮充电流门限(0.1)
    public int backup1;                     //备份1
    public int auto_resTestCount;           //内阻自动测试周期(小时)
    public int backup2;                     //备份2
    public int backup3;                     //备份3
    public int monStdCap;                   //标称容量(AH)
    public int backup4;                     //备份4
    public int backup5;                     //备份5
    public int backup6;                     //备份6
    public int backup7;                     //备份7
 
 
    /**
     * 获取读取汇集参数时的数据
     * @return
     */
    public ByteBuffer getReadByteBuffer(){
        ByteBuffer buffer = ByteBuffer.allocate(2);
        buffer.putShort(ComBase.changeIntToShort(REG_COUNT));
        buffer.flip();
        return buffer;
    }
 
    /**
     * 获取设置时的数据
     * @return
     */
    public ByteBuffer getWriteByteBuffer(){
        ByteBuffer buffer = ByteBuffer.allocate(REG_COUNT*2+3);
        buffer.putShort(ComBase.changeIntToShort(REG_COUNT));
        buffer.put(ComBase.changeIntToByte(REG_COUNT));
        buffer.putShort(ComBase.changeIntToShort(dev_addr));                            //设备地址
        buffer.putShort(ComBase.changeIntToShort(first_monCount));                      //第一路单体数目
        buffer.putShort(ComBase.changeIntToShort(second_monCount));                     //第二路单体数目
        buffer.putShort(ComBase.changeIntToShort(thrid_monCount));                      //第三路单体数目
        buffer.putShort(ComBase.changeIntToShort(fourth_monCount));                     //第四路单体数目
        buffer.putShort(ComBase.changeIntToShort(fifth_monCount));                      //第五路单体数目
        buffer.putShort(ComBase.changeIntToShort(curr_range));                          //电流钳量程
        buffer.putShort(ComBase.changeIntToShort((int)(float_currLimit*10)));           //浮充电流门限(0.1)
        buffer.putShort(ComBase.changeIntToShort(backup1));                             //备份1
        buffer.putShort(ComBase.changeIntToShort(auto_resTestCount));                   //内阻自动测试周期(小时)
        buffer.putShort(ComBase.changeIntToShort(backup2));                             //备份2
        buffer.putShort(ComBase.changeIntToShort(backup3));                             //备份3
        buffer.putShort(ComBase.changeIntToShort(monStdCap));                           //标称容量(AH)
        buffer.putShort(ComBase.changeIntToShort(backup4));                             //备份4
        buffer.putShort(ComBase.changeIntToShort(backup5));                             //备份5
        buffer.putShort(ComBase.changeIntToShort(backup6));                             //备份6
        buffer.putShort(ComBase.changeIntToShort(backup7));                             //备份7
        buffer.flip();
        return buffer;
    }
 
    /**
     * 解析读取过来的汇集器参数
     * @param bf
     * @return
     */
    public boolean putByteBuffer(ByteBuffer bf) {
        if(bf.limit() < REG_COUNT*2) {
            return false;
        }
        ByteBuffer tmpbuf = bf;
        tmpbuf.position(0);
 
        dev_addr = ComBase.changeShortToByte(tmpbuf.getShort());                        //设备地址
        first_monCount = ComBase.changeShortToByte(tmpbuf.getShort());                  //第一路单体数目
        second_monCount = ComBase.changeShortToByte(tmpbuf.getShort());                 //第二路单体数目
        thrid_monCount = ComBase.changeShortToByte(tmpbuf.getShort());                  //第三路单体数目
        fourth_monCount = ComBase.changeShortToByte(tmpbuf.getShort());                 //第四路单体数目
        fifth_monCount = ComBase.changeShortToByte(tmpbuf.getShort());                  //第五路单体数目
        curr_range = ComBase.changeShortToByte(tmpbuf.getShort());                      //电流钳量程
        float_currLimit = ((double)ComBase.changeShortToByte(tmpbuf.getShort()))/10;    //浮充电流门限(0.1)
        backup1 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份1
        auto_resTestCount = ComBase.changeShortToByte(tmpbuf.getShort());               //内阻自动测试周期(小时)
        backup2 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份2
        backup3 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份3
        monStdCap = ComBase.changeShortToByte(tmpbuf.getShort());                       //标称容量(AH)
        backup4 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份4
        backup5 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份5
        backup6 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份6
        backup7 = ComBase.changeShortToByte(tmpbuf.getShort());                         //备份7
 
        return true;
    }
 
    //计算总的单体数目
    public int countMonCount(){
        return this.first_monCount+second_monCount+thrid_monCount+fourth_monCount+fifth_monCount;
    }
 
}