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));
|
}
|
}
|