whyclj
2020-10-23 291d27a34b52911dbcfd8232f0685d34b0fc96a8
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
package com.dev.data;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.text.DecimalFormat;
import java.util.List;
 
import com.base.BaseData;
import com.base.ComBase;
import com.sql.MysqlConnPool;
 
public class BatteryParse_Thread implements Runnable{
    public static final int Batt_Max_Package_Count = 226;
    
    public MysqlConnPool conn_pool;
    public List<Device_inf> devices;
    public BaseData baseData;
    public int dev_id;
 
    public BatteryParse_Thread(MysqlConnPool conn_pool,List<Device_inf> devices,BaseData baseData) {
        this.conn_pool = conn_pool;
        this.devices = devices;
        this.baseData = baseData;
        dev_id = 6000 + baseData.sendnum;
    }
    
    @Override
    public void run() {
        Device_inf dev = getNowDevice(dev_id);
        //System.out.println("»ñÈ¡µ½"+dev.dev_id+"µç³Ø×éÐÅÏ¢");
        if(dev != null) {
            checkBatteryData(dev);
            
            //¸üÐÂʵʱÊý¾Ý
            ChildStoodParse_Thread_SQL.upDeviceRtData(conn_pool,dev);
            
            //²åÈëÀúʷʵʱÊý¾Ý
            ChildStoodParse_Thread_SQL.insertDeviceHistoryData(conn_pool, dev);
        }        
    }
    
    //½âÎöÐîµç³Ø×éÊý¾Ý
    public void checkBatteryData(Device_inf dev) {
        ByteBuffer bf = ByteBuffer.allocate(baseData.data.length);
        bf.order(ByteOrder.LITTLE_ENDIAN);
        bf.put(baseData.data);
        bf.flip();
        bf.position(0);
        int index = (baseData.devident-1)*226;
        
        for(int i=0;i<baseData.dataCount/2;i++) {
            ConfigData voldata = dev.cfgdatas.get(index);                
            //voldata.setValue((float)ComBase.changeShortToDouble(bf.getShort()));
            voldata.setValue(getBattVol(ComBase.changeShortToDouble(bf.getShort())));
            //System.out.println("vol:"+voldata.value);
            ConfigData tmpdata = dev.cfgdatas.get(2*Batt_Max_Package_Count + index++);
            //tmpdata.setValue((float)ComBase.changeShortToDouble(bf.getShort()));
            tmpdata.setValue(getBattTmp(ComBase.changeShortToDouble(bf.getShort())));
            //System.out.println("tmp:"+tmpdata.value);
        }
    }
    
    /**
     * »ñÈ¡µ±Ç°µçѹ
     * @return
     */
    public static float getBattVol(double vol) {
        vol = (float)vol/1.638;
        DecimalFormat df = new DecimalFormat("####");
        //System.err.println(df.format(vol));
        return Float.parseFloat(df.format(vol));
    }
    
    /**
     * »ñÈ¡µ±Ç°Î¶È
     * @return
     */
    public static float getBattTmp(double tmp) {
        tmp = (float)tmp/1.6;
        DecimalFormat df = new DecimalFormat("####");
        return Float.parseFloat(df.format(tmp));
    }
    
    /**
     *     »ñÈ¡µ±Ç°É豸
     * @param dev_id
     * @return
     */
    public Device_inf getNowDevice(int dev_id) {
        for(int i = 0;i<devices.size();i++) {
            if(devices.get(i).dev_id == dev_id) {
                return devices.get(i);
            }
        }
        return null;
    }
    
    public static void main(String[] args) {
        System.out.println(getBattVol(6563.55555));
    }
}