package com.hxzkoa.udp; import java.io.IOException; import java.lang.Thread.State; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import com.hxzkoa.json.tb_system; import com.hxzkoa.json.tb_tag; import com.hxzkoa.services.SysSettingService; import com.hxzkoa.util.Config; import com.hxzkoa.util.HttpUtil; import com.hxzkoa.util.ModifyConfig; import net.sf.json.JSONObject; /** 该类用于接收UDP报文 */ public class Gas_Receive implements Runnable { static DatagramSocket socket; DatagramPacket packet; int times = 5; Thread t = new Thread(this); public static List> GasMessage = new ArrayList>(); public static void insert(String hex,String ip) { List tmp = new ArrayList(); tmp.add(hex); tmp.add(ip); GasMessage.add((ArrayList) tmp); } @Autowired private SysSettingService sysSettingService; /** * 初始化对象 * * @throws NumberFormatException * @throws IOException */ /** 启动线程的方法 */ public void startThread() { t.start(); } /** 停止线程的方法 */ public void stopThread() { try { Thread.sleep(2000); t.interrupt(); } catch (InterruptedException e) { e.printStackTrace(); } } // /** 查看线程状态的方法 */ public State getState() { State state = t.getState(); return state; } public void run() { while (true) { try { if (GasMessage.size()>0){ String datas = GasMessage.get(0).get(0); String ip = GasMessage.get(0).get(1); //报文处理 String BaowenPath = Config.getBaowenConfig(); String baowenStatus = ModifyConfig.readData(BaowenPath, "baowenSwitch"); if(datas!=null){ String hex = datas.toUpperCase(); String postUrl = Config.getPostUrl(); if(hex.startsWith("0103")|| hex.startsWith("0203")|| hex.startsWith("0303") ) { String messageJson = GetNowTime.timestamp2()+ " 收:" +datas; if (baowenStatus.equals("1")){ /* Udp_Receive.gasMessage.add(messageJson); */ } String gasOpen = "0"; postUrl = Config.getPostUrl(); String url_setting_bw = postUrl + "getSysSetting.do"; JSONObject re_tb_setting = HttpUtil.doPost(url_setting_bw, "", Config.getCharset()); tb_system re_setting = (tb_system) JSONObject.toBean(JSONObject.fromObject(re_tb_setting.get("result").toString()), tb_system.class); gasOpen = re_setting.getGas_open(); if(gasOpen.equals("1") && hex.length()>140) { ReadGas.dell_gas_data(ip,hex); } } GasMessage.remove(0); Thread.sleep(0); } else { Thread.sleep(300); } } } catch (Exception e) { e.printStackTrace(); // 输出异常信息 } } } 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 void main(String[] args) { // try { // Udp_Receive receive = new Udp_Receive("8081"); // receive.run(); // } catch (Exception e) { // e.printStackTrace(); // } // String result = "{\"result\":{\"addtime\":\"2021-02-24 09:41:06\",\"dong_status\":\"\",\"gaodu\":\"155\",\"gongfang\":\"\",\"id\":35,\"imu\":\"\",\"pinglv\":\"2\",\"power\":\"100\",\"sleep_satus\":\"\",\"sleep_time\":\"\",\"state\":\"未绑定\",\"status\":\"status\",\"sudu\":\"无\",\"tag_id\":\"1013\",\"version\":\"V2.21\"}}"; // // String result = "{\"result\":\"1103\"}"; // JSONObject re_tag_bw = JSONObject.fromObject(result); // System.out.println("----------response:" + re_tag_bw.toString()); // tb_tag re_tag = (tb_tag) JSONObject.toBean(JSONObject.fromObject(re_tag_bw.get("result").toString()), // tb_tag.class); // // System.out.println(re_tag.toString()); // System.out.println(re_tag.getTag_id()); // JSONObject json = JSONObject.fromObject(result); // System.out.println(json.toString()); } }