package com.dev.data; import java.io.IOException; 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; /** * ½âÎö¿ª¹ØÁ¿°åÊý¾Ý * @author LiJun * */ public class SwitchBoardParse_Thread implements Runnable{ public static final int Timing_DataCount = 130; //¶¨Ê±·¢ËÍÊý¾Ý°ü³¤¶È public static final int Event_DataCount = 60; //ʼþ·¢ËÍÊý¾Ý°ü³¤¶È public static final boolean isUseDataTime = true; //ÊÇ·ñʹÓÃÊý¾ÝÖ¡ÖеÄʱ¼ä public MysqlConnPool conn_pool; public List devices; public BaseData baseData; public int dev_id; public SwitchBoardParse_Thread(MysqlConnPool conn_pool,List devices,BaseData baseData) { this.conn_pool = conn_pool; this.devices = devices; this.baseData = baseData; } @Override public void run() { boolean flag = true; // if(baseData.data.length == Timing_DataCount || // baseData.data.length == Event_DataCount) { if(flag) { //ÅжÏÊý¾Ý°ü³¤¶È //System.out.println("½ÓÊÕµ½Êý¾Ý°ü"); //ÕýÈ·Êý¾Ý°ü parseSwitchBoardData(); //½âÎö¿ª¹ØÁ¿°åÊý¾Ý for(int i=0;i cfgs = dev.cfgdatas; // for(int k = 0;k<4;k++) { // canid = ComBase.changeShortToInt(bf.getShort()); // for(int i=0;i<16 && cfg_index< cfgs.size();i++) { // if(checkCanUpdate(cfgs.get(cfg_index),update_en)) { // cfgs.get(cfg_index++).value = ((canid&my_power_2(i))>0)?1:0; // } // } // } // } }break; case 0xE064:{ parseSpecifi(5002,bf,1); }break; case 0xE063:{ //2ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseSpecifi(5002,bf,0); };break; case 0xE066:{ parseSpecifi(5003,bf,1); }break; case 0xE065:{ //3ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseSpecifi(5003,bf,0); };break; case 0xE068:{ parseSpecifi(5004,bf,1); }break; case 0xE067:{ //4ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseSpecifi(5004,bf,0); };break; case 0xE06A:{ parseSpecifi(5005,bf,1); }break; case 0xE069:{ //5ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseSpecifi(5005,bf,0); };break; case 0xE06C:{ parseSpecifi(5006,bf,1); }break; case 0xE06B:{ //6ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseSpecifi(5006,bf,0); };break; //case 0xEC46:{ //7ºÅ¿ª¹ØÁ¿°åÊý¾Ý //parseSevenControlPanel(5007,bf,0); //};break; case 0xEC40:{ //1ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5001,bf,128); }break; case 0xE051:{ //1ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5001,bf,129); }break; case 0xEC41:{ //2ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5002,bf,128); }break; case 0xE052:{ //2ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5002,bf,129); }break; case 0xEC42:{ //3ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5003,bf,128); }break; case 0xE053:{ //3ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5003,bf,129); };break; case 0xEC43:{ //4ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5004,bf,128); }break; case 0xE054:{ //4ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5004,bf,129); }break; case 0xEC44:{ //5ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5005,bf,128); }break; case 0xE055:{ //5ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5005,bf,129); }break; case 0xEC45:{ //6ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5006,bf,128); }break; case 0xE056:{ //6ºÅ¿ª¹ØÁ¿°åÊý¾Ý parseControlPanel(5006,bf,129); }break; default:{ //ÌÞ³ý´íÎóÖ¡ for(int k = 0;k<4;k++) { canid = ComBase.changeShortToInt(bf.getShort()); //System.out.println(canid); } }break; } } } //½âÎöÖ¸¶¨É豸idµÄÉ豸ÐÅÏ¢ public void parseSpecifi(int dev_id,ByteBuffer bf,int cfg_index) { int canid = 0; Device_inf dev = getNowDevice(dev_id); if(null != dev) { dev.isNewData = true; List cfgs = dev.cfgdatas; for(int k = 0;k<4;k++) { canid = ComBase.changeShortToInt(bf.getShort()); for(int i=0;i<16 && cfg_index< cfgs.size();i++) { cfgs.get(cfg_index++).setValue(((canid&my_power_2(i))>0)?1:0); cfg_index++; } } } } //½âÎöÄ£Äâ¿ØÖÆÅÌÊý¾Ý public void parseControlPanel(int dev_id,ByteBuffer bf,int cfg_index) { int canid = 0; Device_inf dev = getNowDevice(dev_id); if(null != dev) { dev.isNewData = true; List cfgs = dev.cfgdatas; for(int k = 0;k<3;k++) { canid = ComBase.changeShortToInt(bf.getShort()); for(int i=0;i<16 && cfg_index< cfgs.size();i++) { //System.out.println(cfgs.get(cfg_index).data_value+"===="+cfgs.get(cfg_index).value); cfgs.get(cfg_index++).setValue(((canid&my_power_2(i))>0)?1:0); cfg_index++; } } canid = ComBase.changeShortToInt(bf.getShort()); cfgs.get(cfg_index++).setValue(canid);; } } //½âÎöÄ£Äâ¿ØÖÆÅÌÊý¾Ý public void parseSevenControlPanel(int dev_id,ByteBuffer bf,int cfg_index) { int canid = 0; Device_inf dev = getNowDevice(dev_id); if(null != dev) { dev.isNewData = true; List cfgs = dev.cfgdatas; for(int k = 0;k<3;k++) { canid = ComBase.changeShortToInt(bf.getShort()); for(int i=0;i<16 && cfg_index< cfgs.size();i++) { //System.out.println(cfgs.get(cfg_index).data_value+"===="+cfgs.get(cfg_index).value); cfgs.get(cfg_index++).setValue(((canid&my_power_2(i))>0)?1:0); } } canid = ComBase.changeShortToInt(bf.getShort()); cfgs.get(cfg_index++).setValue(canid);; } } //ÅжÏÊÇ·ñÐèÒª¸üÐÂ״̬ public boolean checkCanUpdate(ConfigData cfg,int update_en) { if(cfg.update_code == 0 || (cfg.update_code ==1 && update_en == 1)) { cfg.update_en = 1; return true; } return false; } public static void main(String[] args) throws IOException{ for(int i = 0; i<17;i++) { //System.out.println(Math.pow(2,i)); for(int k=0;k<6535;k++) { System.out.println(k&(int)Math.pow(2,i)); } } // while(true) { // BufferedReader cin = new BufferedReader(new InputStreamReader(System.in)); // int n = Integer.parseInt(cin.readLine().trim()); // System.out.println(my_power_2(n)); // } //System.out.println(Long.MAX_VALUE); //System.out.println(Long.MIN_VALUE); } 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()); } //»ñÈ¡µ±Ç°É豸ÐÅÏ¢ public Device_inf getNowDevice(int dev_id) { for(int i=0;i