package baowen;
|
import java.util.Vector;
|
import data_model.YuanshiByt;
|
|
/**´¦ÀíÔʼÊý¾Ý*/
|
public class Dell_uanshi_byt {
|
|
static Vector<YuanshiByt> yuanshivec=new Vector<>();
|
|
|
/**²åÈëÔʼ²â¾àÊý¾Ý£¬Ã¿¸öipÒ»¸ö¼¯ºÏÿ¸öIPÉÏÀ´µÄÊý¾Ý×°Èë¸÷×ÔIPÖ®ÖÐ*/
|
public static void intsert(String ip,String hex,String time,int timestamp,int port) {
|
if(get_ys(ip) !=null) {
|
int lenth=hex.length()/2;
|
for(int i=0;i<lenth;i++) {
|
String hex1=hex.substring(2*i, (i+1)*2);
|
get_ys(ip).getData().add(hex1);
|
hex1=null;
|
}
|
get_ys(ip).setTime(time);
|
get_ys(ip).setTimestamp(timestamp);
|
dell_ysbyt(get_ys(ip),ip,port);
|
}else {
|
YuanshiByt ysbyt=new YuanshiByt();
|
Vector<String> data1=new Vector<>();
|
StringBuffer okhex=new StringBuffer();
|
ysbyt.setIp(ip);
|
ysbyt.setPort(port);
|
ysbyt.setData(data1);
|
ysbyt.setTimestamp(timestamp);
|
ysbyt.setTime(time);
|
ysbyt.setUsart_state(0);
|
ysbyt.setPack(okhex);
|
ysbyt.setDatalen(0);
|
ysbyt.setType("");
|
int lenth=hex.length()/2;
|
for(int i=0;i<lenth;i++) {
|
String hex1=hex.substring(2*i, (i+1)*2);
|
data1.add(hex1);
|
hex1=null;
|
}
|
yuanshivec.add(ysbyt);
|
dell_ysbyt(ysbyt,ip,port);
|
}
|
|
}
|
|
/**ͨ¹ýIPÕÒµ½¸ÃIPµÄÊý¾Ý¼¯ºÏ*/
|
public static YuanshiByt get_ys(String ip) {
|
YuanshiByt ysbyt=null;
|
int size=yuanshivec.size();
|
for(int i=0;i<size;i++) {
|
YuanshiByt ysbyt1=yuanshivec.get(i);
|
String ip1=ysbyt1.getIp();
|
if(ip1.equals(ip)) {
|
ysbyt=ysbyt1;
|
break;
|
}
|
}
|
return ysbyt;
|
}
|
|
|
|
/**´¦ÀíÔʼ¼¯ºÏÖеÄÊý¾Ý*/
|
public static void dell_ysbyt(YuanshiByt ysbyt,String ip,int port) {
|
String time=ysbyt.getTime();
|
int timestamp=ysbyt.getTimestamp();
|
while(ysbyt.getData().size() !=0) {
|
String hex=ysbyt.getData().get(0);
|
int usart_state=ysbyt.getUsart_state();
|
//½«ÔʼÊý¾Ý¼¯ºÏÖеĵÚÒ»ÌõÊý¾ÝÈ¡³ö·ÅÈëswichÑ»·
|
switch(usart_state) {
|
|
case 0:
|
//Èç¹ûÊý¾ÝÊÇ55ÔòÖ´ÐÐ
|
if(hex.equals("55")) {
|
//½«Êý¾Ý´¦ÀíµÄ״̬ÐÞ¸ÄΪ1
|
ysbyt.setUsart_state(1);
|
//ͬʱ²åÈëÊý¾ÝÔÚ×Ö·û´®ÖÐ
|
ysbyt.getPack().append(hex);
|
}
|
break;
|
|
case 1:
|
//Èç¹ûÊý¾ÝÊÇAAÔòÖ´ÐÐ
|
if(hex.equals("AA")) {//״̬1Çé¿öÏ£¬µÈ´ý½ÓÊÕµ½AA°üÍ·2£¬È»ºó±ä³É״̬2
|
ysbyt.setUsart_state(2);
|
ysbyt.getPack().append(hex);
|
}
|
break;
|
|
case 2:
|
//Êý¾ÝÀàÐ͸øTYPE
|
ysbyt.setType(hex);
|
ysbyt.setUsart_state(3);
|
ysbyt.getPack().append(hex);
|
break;
|
|
case 3:
|
//±¨ÎÄÊý¾Ý¶ÎÊý¾Ý³¤¶È
|
int d=Udp_Receive.decodeHEX(hex);
|
ysbyt.getPack().append(hex);
|
ysbyt.setUsart_state(4);
|
ysbyt.setDatalen(d);
|
break;
|
|
case 4:
|
ysbyt.getPack().append(hex);
|
int lenth=ysbyt.getPack().length();
|
int a=ysbyt.getDatalen()*2+8;
|
if(lenth==a) {
|
//Êý¾Ý´¦ÀíµÄ״̬
|
ysbyt.setUsart_state(0);
|
//УÑé
|
String check=Jiaoyan.check2(ysbyt.getPack().toString());
|
String panck_cmd=ysbyt.getPack().toString().substring(lenth-2,lenth)
|
+ysbyt.getPack().substring(lenth-4, lenth-2);
|
|
//Èç¹ûУÑé³É¹¦
|
if(check.equals(panck_cmd)) {
|
//Èç¹ûÊDzâ¾àÊý¾Ý
|
String type=ysbyt.getType();
|
switch(type) {
|
case "01"://²â¾àÐÅÏ¢
|
Dell_55AA01.dell55AA01(ysbyt.getPack().toString(), ip, port);
|
break;
|
|
case "0A"://0A×¢²á°ü
|
break;
|
|
case "02"://ÐÄÌø°ü
|
break;
|
|
case "0C"://²â¾àÊý¾Ý
|
Udp_Receive.dell_55aa0c(ysbyt.getPack().toString(), ip, port);
|
break;
|
|
case "09"://¶ÁÈ¡»ùÕ¾ÅäÖÃÐÅÏ¢³É¹¦
|
break;
|
|
case "03"://ÅäÖÃÐÅÏ¢
|
break;
|
|
case "07":
|
break;
|
case "10":
|
break;
|
case "12":
|
break;
|
case "0E":
|
break;
|
}
|
}
|
|
ysbyt.getPack().setLength(0);
|
ysbyt.setDatalen(0);
|
ysbyt.setType("");
|
}else if(lenth>a ) {
|
ysbyt.getPack().setLength(0);
|
ysbyt.setDatalen(0);
|
ysbyt.setType("");
|
}
|
|
break;
|
|
}
|
//ɾ³ý´¦Àí¹ýµÄÊý¾Ý
|
ysbyt.getData().removeElement(hex);
|
}
|
|
}
|
|
}
|