package BaoWen; import java.io.File; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException; import Frame.BaoWenHuiFang; import Frame.TcpIpManage; import JNADell.Dell_usetaganchor; import Method.BaoWenShow; import Method.GetNowTime; import Method.PutPosInHistoryDataBase; import Method.SaveFIleInTxt; import PbuliClass.ShowMessage; import PbuliClass.Systems; import ToolBarS.ToolBarModel; import VectroData.ForwardDatas; import engbs.Bsbaowen; import engbs.Tongji; import home.Open_soft_dialog; import jiekou.Kongzhi; import tbDataModel_Dell.Dell_Ip; import tbDataModel_Dell.Tools; import urt.Dell_Urt_XTB; import urt.Dell_replypara; import urt.Dell_status; import yunwei.dell_enginemonitor; import yunwei.dell_shebei_manege; /**¸ÃÀàÓÃÓÚ¼àÌýÍⲿÊý¾Ý¾ÍÊÇURTÊý¾ÝµÈ*/ public class Urt_7000_port implements Runnable { static DatagramSocket socket; static String havedatatime=GetNowTime.now();//ÓÐÊý¾ÝÉÏÀ´¾Í¸üÐÂÏÂʱ¼ä static String gspgengxin=GetNowTime.now();//gpsÊý¾ÝÓиüРstatic String a=Systems.sys().getBaowentou();//±¨ÎÄÍ· int port=Integer.parseInt(Systems.sys().getCs_udp()); DatagramPacket packet; static int yq=0; static int urtbaowenmun=1;//yang2023.07.08 /**³õʼ»¯¶ÔÏó * @throws NumberFormatException * @throws IOException */ public Urt_7000_port() throws NumberFormatException, IOException{ socket = new DatagramSocket(port); byte[] data = new byte[2048]; // ´´½¨byteÊý×é packet= new DatagramPacket(data, data.length); } /**Æô¶¯Ï̵߳ķ½·¨*/ public void startThread() { Open_soft_dialog.addara("Æô¶¯"+port+"¶Ë¿Ú¼àÌý"); Thread t=new Thread(this); t.start(); } public void run() { while(true) { if(TcpIpManage.isUrt()) { try { socket.receive(packet); // ½ÓÊÕÊý¾Ý°ü urtbaowenmun++; if(ToolBarModel.isStartpos()) {//Èç¹û¿ªÆôλÖýâÎö dellurtport_reveive(packet);//´¦ÀíURT¶Ë¿ÚÊÕµ½µÄÊý¾Ý } if(urtbaowenmun==5000000) { urtbaowenmun=1; } } catch (Exception e) { e.printStackTrace(); } }else { try { Thread.sleep(1000);//ÐÝÃßʱ¼ä } catch (InterruptedException e) { e.printStackTrace(); } } } } /**´¦Àíurt¶Ë¿ÚÊÕµ½µÄÊý¾Ý2023.07.08*/ public static void dellurtport_reveive(DatagramPacket packet) { Dell_55AA01.dell_gui(); int lenth=packet.getLength(); String ip=packet.getAddress().getHostAddress();//»ñÈ¡·¢ËͶ˵ÄIPµØÖ·¶ÔÏó int port=packet.getPort(); String message=new String(packet.getData(), 0, lenth);//½âÎöASCLL¸ñʽÊý¾Ý message=message.replaceAll(" ", ""); message=message.replaceAll("\r\n", ""); String hex=message.toUpperCase(); String time2=GetNowTime.timestamp2(); DellMessage.save_log(hex);//Èç¹ûJNA¿ªÆô±£´æÔ­Ê¼Êý¾Ýyang20230725 BaoWenShow.show2(message, "URT¶Ë¿Ú", ip, port);//ÏÔʾURT¶Ë¿ÚÊý¾Ý BaoWenShow.show2(message, "ԭʼÊý¾Ý", ip, port);//ÏÔʾURT¶Ë¿ÚÊý¾Ý byte[] byt=subBytes(packet.getData(),0, lenth); String datas=Tools.Bytes2HexString(byt);//½âÎöHEX¸ñʽÊý¾Ý if(datas.startsWith("55AA")) { Dell_Baowen.intsert(ip, datas,time2, port); } Dell_Ip.insert(ip); if(!BaoWenHuiFang.isHuifangbaowen()) {//´¦ÀíԭʼÊý¾Ýº¯Êý if(ToolBarModel.isSavebaowen() && (!BaoWenHuiFang.isHuifangbaowen())) {//Èç¹û¿ªÆôÁ˱¨Îı£´æÔ­Ê¼±¨ÎĻطŠPutPosInHistoryDataBase.insert_baowen(message, ip,time2); String messages=message+","+ip+","+time2; String name="./savefile/"+ToolBarModel.getBaowenname()+".txt"; File file4=new File(name); SaveFIleInTxt.save_in_txt(messages,file4,true); } dellmessage(hex,message,ip,port,time2);//´¦ÀíÊÕµ½µÄ±¨ÎÄÐÅÏ¢ } } public static DatagramSocket getSocket() { return socket; } public static byte[] subBytes(byte[] src, int begin, int count) { byte[] bs = new byte[count]; System.arraycopy(src, begin, bs, 0, count); return bs; } public static String getHavedatatime() { return havedatatime; } public static String getGspgengxin() { return gspgengxin; } public static int getYq() { return yq; } /**ʵÏÖUDPת·¢ * @param data ÐèҪת·¢µÄÊý¾Ý * @param lenthÐèҪת·¢µÄÊý¾Ý³¤¶È * @param ipת·¢µØÖ· * @param ports¶Ë¿Ú * @throws IOException */ public static void udp_out(byte[] data,int length,String ip,String ports,String tagid,String message) { int port=Integer.parseInt(ports); InetAddress address=null; try { address=InetAddress.getByName(ip); } catch (UnknownHostException e) { ShowMessage.zidingyi_24("UDPδ֪µØÖ·Òì³£:"+ip); } DatagramPacket packet=new DatagramPacket(data, length, address, port); try { socket.send(packet); BaoWenShow.show(message, "UDPת·¢",tagid); } catch (IOException e) { ShowMessage.zidingyi_24("UDP·¢ËÍÒì³£:"+ip); } } public static void dell_GNGGA(String message,String ip,int port) { gspgengxin=GetNowTime.now(); String[] gnggns=message.split("\\$GNGGA"); int size=gnggns.length; if(size>2) { for(int i=1;i15) { Dell_GNGGA.dell_GNGGA("$GNGGA"+gnggns[i],ip,port); } } }else if(size==2){ Dell_GNGGA.dell_GNGGA("$GNGGA"+gnggns[1],ip,port); } } public static void dell_herat(String message) { Tongji.intsert_hear(message); yq++; Tongji.setYingqingint(yq); if(yq==1000) { yq=1; } } /**´¦ÀímessageÐÅÏ¢*/ public static void dellmessage(String hex,String message,String ip,int port,String time) { if(message.startsWith(a+"display")) { Dell_display.display(message); }else if(message.startsWith(a+"anchor_info")) { Dell_Message.dell_anchor_info(message); }else if(message.startsWith(a+"anchor_near")) { Dell_Message.dell_anchor_near(message); }else if(message.startsWith(a+"anchor_tongbu")) { Dell_Message.dell_anchor_tongbu(message); }else if(message.startsWith(a+"tag_info")) { Dell_Message.dell_tag_info(message); }else if(message.startsWith(a+"gas_colector")) { Dell_Message.dell_tag_info(message); }else if(message.startsWith(a+"gas_sensor")) { Dell_Message.dell_tag_info(message); }else if(message.startsWith("get_anchor_info")) { Dell_Message.dell_get_anchor_info(message); }else if(message.startsWith("get_anchor_nearinfo")) { Dell_Message.dell_get_anchor_nearinfo(message); }else if(message.startsWith("get_taginfo")) { Dell_Message.dell_get_taginfo(message); }else if(message.startsWith("$GNGGA")) { dell_GNGGA( message, ip, port); }else if (message.startsWith("$SSGGA")){ String replace = message.replace("$SSGGA", "$GNGGA"); dell_GNGGA( replace, ip, port); } else if(message.startsWith("$GPGGA")) { String replace = message.replace("$GPGGA", "$GNGGA"); dell_GNGGA( replace, ip, port); //Dell_Message.dell_gpgga(message, ip); }else if(message.startsWith("add_person")) { Dell_Add_Alert_Delete_Person.add_person(message); }else if(message.startsWith("alert_person")) { Dell_Add_Alert_Delete_Person.alert_person(message); }else if(message.startsWith("delete_person")) { Dell_Add_Alert_Delete_Person.delete_person(message); }else if(message.startsWith("BSTOCS1")) { Bsbaowen.dell_BSTOCS1(message); }else if(message.startsWith("hxzk_heart")) { dell_herat(message); }else if(message.startsWith("$XTB")) { Dell_Urt_XTB.dell_XTB(message,ip,port); }else if(message.startsWith("deltefoword")) { ForwardDatas.delete(message); }else if(hex.startsWith("55AA")) { Dell_Baowen.intsert(ip,hex,time,port); }else if(message.startsWith("55BB")) { Dell_usetaganchor.dell_udp_message(message); }else if(message.startsWith("$replypara")) { Dell_replypara.replypara(message); }else if(message.startsWith("$status")) { Dell_status.dell_status(message); }else if(message.startsWith("$control")) { Kongzhi.fengming(message); }else if(message.startsWith("$engineheart")) { //ÐÄÌø°ü¸ñʽΪ£º$engineheart,µçÄÔÐòÁкÅ,end dell_enginemonitor.dell_message(message, ip); }else if(message.startsWith("$control")) { //$equipment,tagid,¿¨ºÅ,°æ±¾ºÅ,µçÄÔÐòÁкÅ,end dell_shebei_manege.dell_message(message, ip); }else { Dell_Baowen.intsert(ip,message,time,port);//²åÈ뼯ºÏ } } /**½«Êý¾Ý·¢¸ø»ùÕ¾*/ public static void outlora(byte[] data,int length,String ip,int port,String datafrom) { DatagramSocket socket = getSocket(); if(socket ==null) { return; } if(port<800) { port=8233; } String datas1=Tools.Bytes2HexString(data); if(ip==null) { datas1="ûÓмì²âµ½IP...\n"; BaoWenShow.ok("2", "TOANC",datas1, "",datafrom); }else if(ip.length()<4 || port ==0){ datas1="erro:lora"+ip+"µØÖ·"+ip+"¶Ë¿Ú"+port; BaoWenShow.ok("2", "TOANC",datas1, "",datafrom); return; } DatagramPacket packet=null; InetAddress address=null; //Èç¹ûÊý¾ÝÀàÐÍÏàͬ try { address=InetAddress.getByName(ip); } catch (UnknownHostException e) { e.printStackTrace(); } packet=new DatagramPacket(data, length, address, port); try { Urt_7000_port.socket.send(packet); String datas=Tools.Bytes2HexString(data).substring(0, packet.getLength()*2); BaoWenShow.ok("2", "TOANC",datas, "",datafrom); } catch (IOException e) { e.printStackTrace(); } } public static int getUrtbaowenmun() { return urtbaowenmun; } }