package com.dev.data;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.List;
|
|
import com.base.BaseData;
|
import com.base.Com;
|
import com.base.ComBase;
|
import com.sql.MysqlConnPool;
|
|
public class InverterPower_Thread implements Runnable{
|
public MysqlConnPool conn_pool;
|
public List<Device_inf> devices;
|
public BaseData baseData;
|
public String sourse_ip; //Ä¿±êÔ´ipµØÖ·
|
|
|
public InverterPower_Thread(MysqlConnPool conn_pool,List<Device_inf> devices,BaseData baseData,String sourse_ip) {
|
this.conn_pool = conn_pool;
|
this.devices = devices;
|
this.baseData = baseData;
|
this.sourse_ip = sourse_ip;
|
}
|
|
@Override
|
public void run() {
|
Device_inf dev = null;
|
int dev_type = 0; //1£ºÈýÏàÄæ±äµçÔ´ 2£ºµ¥ÏàÄæ±äµçÔ´
|
|
if(baseData.devident > 0) {
|
switch (baseData.devident) {
|
case 0x0801:{
|
//1ºÅÈýÏàÄæ±äµçÔ´
|
dev = getNowDevice(2001);
|
dev_type = 1;
|
}break;
|
case 0x0821:{
|
//2ºÅÈýÏàÄæ±äµçÔ´
|
dev = getNowDevice(2002);
|
dev_type = 1;
|
}break;
|
case 0x0841:{
|
//3ºÅÈýÏàÄæ±äµçÔ´
|
dev = getNowDevice(2003);
|
dev_type = 1;
|
}break;
|
case 0x0861:{
|
//4ºÅÈýÏàÄæ±äµçÔ´
|
dev = getNowDevice(2004);
|
dev_type = 1;
|
}break;
|
case 0x0881:{
|
//1ºÅµ¥ÏàÄæ±äµçÔ´
|
dev = getNowDevice(3001);
|
dev_type = 2;
|
}break;
|
case 0x08A1:{
|
//2ºÅµ¥ÏàÄæ±äµçÔ´
|
dev = getNowDevice(3002);
|
dev_type = 2;
|
}
|
default:
|
break;
|
}
|
|
}else if(null != sourse_ip && null == dev) {
|
if(sourse_ip.contains("192.0.0.53")) {
|
//1ºÅÈýÏàÄæ±äµçÔ´
|
dev_type = 1;
|
dev = getNowDevice(2001);
|
}else if(sourse_ip.contains("192.0.0.54")) {
|
//2ºÅÈýÏàÄæ±äµçÔ´
|
dev_type = 1;
|
dev = getNowDevice(2002);
|
}else if(sourse_ip.contains("192.0.0.55")) {
|
//3ºÅÈýÏàÄæ±äµçÔ´
|
dev_type = 1;
|
dev = getNowDevice(2003);
|
}else if(sourse_ip.contains("192.0.0.56")) {
|
//4ºÅÈýÏàÄæ±äµçÔ´
|
dev_type = 1;
|
dev = getNowDevice(2004);
|
}else if(sourse_ip.contains("192.0.0.51")) {
|
//1ºÅµ¥ÏàÄæ±äµçÔ´
|
dev_type = 2;
|
dev = getNowDevice(3001);
|
}else if(sourse_ip.contains("192.0.0.52")) {
|
//2ºÅµ¥ÏàÄæ±äµçÔ´
|
dev_type = 2;
|
dev = getNowDevice(3002);
|
}
|
}
|
|
if(dev != null) {
|
//System.err.println("**************************");
|
if(dev_type == 1 && assemThreeInverterDevData(dev)) {
|
|
|
//System.err.println("¸üÐÂÄæ±äµçÔ´"+dev.dev_id+"ÐÅÏ¢³É¹¦");
|
//¸üÐÂʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.upDeviceRtData(conn_pool,dev);
|
|
//²åÈëÀúʷʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.insertDeviceHistoryData(conn_pool, dev);
|
}else if(dev_type == 2 && assemSingleInverterDevData(dev)) {
|
|
//¸üÐÂʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.upDeviceRtData(conn_pool,dev);
|
|
//²åÈëÀúʷʵʱÊý¾Ý
|
ChildStoodParse_Thread_SQL.insertDeviceHistoryData(conn_pool, dev);
|
}
|
}
|
Dev_UDPServer_Thread.thread_count--;
|
}
|
|
private boolean assemSingleInverterDevData(Device_inf dev) {
|
ByteBuffer bf = ByteBuffer.allocate(baseData.data.length);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.put(baseData.data);
|
bf.flip();
|
bf.position(0);
|
for(int i = 0;i<12;i++) {
|
dev.cfgdatas.get(i).setValue(bf.getFloat());
|
//System.out.println(dev.cfgdatas.get(i).data_value+":"+dev.cfgdatas.get(i).value);
|
}
|
int index = 12;
|
int diag_inf = ComBase.changeShortToInt(bf.getShort());
|
|
int code = ComBase.changeShortToInt(bf.getShort());
|
dev.cfgdatas.get(index++).setValue(diag_inf);
|
dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(0))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(1))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(2))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
return true;
|
}
|
|
//½âÎöÊý¾Ý
|
public boolean assemThreeInverterDevData(Device_inf dev) {
|
ByteBuffer bf = ByteBuffer.allocate(baseData.data.length);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.put(baseData.data);
|
bf.flip();
|
bf.position(0);
|
//System.err.println(bf.limit()+"####################");
|
for(int i = 0;i<17;i++) {
|
dev.cfgdatas.get(i).setValue(bf.getFloat());
|
//System.out.println(dev.cfgdatas.get(i).data_value+":"+dev.cfgdatas.get(i).value);
|
}
|
int index = 17;
|
int code = ComBase.changeShortToInt(bf.getShort()); //Õï¶ÏÐÅÏ¢
|
dev.cfgdatas.get(index++).setValue(code);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
code = ComBase.changeShortToInt(bf.getShort());
|
dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(0))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(1))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(2))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
//dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(3))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
//dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(4))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
//dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(5))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
//dev.cfgdatas.get(index++).setValue((code&ComBase.my_power_2(6))>0?1:0);
|
//System.out.println(dev.cfgdatas.get(index-1).data_value+"=="+dev.cfgdatas.get(index-1).value);
|
return true;
|
}
|
|
|
//¸ù¾Ýµ±Ç°É豸id»ñÈ¡µ±Ç°É豸
|
public Device_inf getNowDevice(int dev_id) {
|
for(int i=0;i<devices.size();i++) {
|
if(dev_id == devices.get(i).dev_id) {
|
return devices.get(i);
|
}
|
}
|
return null;
|
}
|
}
|