package com.dev.data;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Date;
|
import java.util.List;
|
|
import com.base.BaseData;
|
import com.base.Com;
|
import com.base.ComBase;
|
import com.base.ComFn;
|
import com.sql.MysqlConnPool;
|
|
public class SteamTurbine_Thread implements Runnable{
|
public MysqlConnPool conn_pool;
|
public List<Device_inf> devices;
|
public List<ConfigData> cfgdatas;
|
public BaseData baseData;
|
|
|
public SteamTurbine_Thread(MysqlConnPool conn_pool,List<Device_inf> devices,List<ConfigData> cfgdatas,BaseData baseData) {
|
this.conn_pool = conn_pool;
|
this.devices = devices;
|
this.cfgdatas = cfgdatas;
|
this.baseData = baseData;
|
}
|
|
@Override
|
public void run() {
|
//System.out.println("SteamTurbine_Thread start at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
if(checkSteamTurData()) {
|
Device_inf dev = getNowDevice(4001);
|
if(dev != null) {
|
//¸üÐÂʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.upDeviceRtData(conn_pool,dev);
|
|
//²åÈëÀúʷʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.insertDeviceHistoryData(conn_pool, dev);
|
}
|
|
dev = getNowDevice(4002);
|
if(dev != null) {
|
//¸üÐÂʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.upDeviceRtData(conn_pool,dev);
|
|
//²åÈëÀúʷʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.insertDeviceHistoryData(conn_pool, dev);
|
}
|
|
}else {
|
System.err.println("123456");
|
}
|
}
|
|
|
public boolean checkSteamTurData() {
|
if(baseData != null) {
|
ByteBuffer bf = ByteBuffer.allocate(baseData.data.length);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.put(baseData.data);
|
bf.flip();
|
// if(bf.limit() < cfgdatas.size()*4) {
|
// return false;
|
// }
|
bf.position(0);
|
//System.out.println(bf.getFloat());
|
int analogcount = 26;
|
for(int i = 0;i<analogcount;i++) {
|
cfgdatas.get(i).setValue(bf.getFloat());
|
//System.out.println(cfgdatas.get(i).data_value+":"+cfgdatas.get(i).value);
|
}
|
int code = 0;
|
//System.err.println(cfgdatas.size());
|
int index = 0;
|
for(index = analogcount;(index+6)<cfgdatas.size();) {
|
ComBase.changeByteToInt(bf.get());
|
code = ComBase.changeByteToInt(bf.get());
|
cfgdatas.get(index++).setValue((code&my_power_2(7))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(6))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(5))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(4))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(3))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(2))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(1))>0?1:0);
|
cfgdatas.get(index++).setValue((code&my_power_2(0))>0?1:0);
|
}
|
//System.out.println(index+"==="+cfgdatas.size());
|
for(;(index+3)<cfgdatas.size();) {
|
ComBase.changeByteToInt(bf.get());
|
code = ComBase.changeByteToInt(bf.get());
|
//System.out.println(cfgdatas.get(index).data_value);
|
cfgdatas.get(index++).setValue((code&my_power_2(7))>0?1:0);
|
//System.out.println(cfgdatas.get(index).data_value);
|
cfgdatas.get(index++).setValue((code&my_power_2(6))>0?1:0);
|
//System.out.println(cfgdatas.get(index).data_value);
|
cfgdatas.get(index++).setValue((code&my_power_2(5))>0?1:0);
|
//System.out.println(cfgdatas.get(index).data_value);
|
cfgdatas.get(index++).setValue((code&my_power_2(4))>0?1:0);
|
}
|
return true;
|
}
|
return false;
|
}
|
|
//»ñÈ¡µ±Ç°É豸ÐÅÏ¢
|
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 int my_power_2(int N){
|
StringBuffer v = new StringBuffer("");
|
long num[] = new long[2];
|
num[1] = 1;
|
if(N > 62){
|
num[0] = 1;
|
num[0] = num[0]<<(N - 62);
|
num[1] = num[1]<<62;
|
String s = String.valueOf(num[1]);
|
int size = 30,i = 0,j = 0;
|
long n[] = new long[size + 1];
|
//System.out.println(num[0]+" "+s);
|
for(i = s.length() - 1;i >= 0;-- i){
|
n[j ++] = (long) (num[0] * (s.charAt(i) - '0'));
|
//System.out.println(n[j - 1]);
|
}
|
for(i = 0;i < size;++ i){
|
while(n[i] > 9){
|
n[i + 1] += n[i] / 10;
|
n[i] %= 10;
|
}
|
}
|
boolean bl = false;
|
for(i = size;i >= 0;-- i){
|
if(n[i] != 0 || bl){
|
v.append(n[i]);
|
bl = true;
|
}
|
}
|
}else{
|
num[1] = num[1] << N;
|
v.append(String.valueOf(num[1]));
|
}
|
return Integer.parseInt(v.toString());
|
}
|
}
|