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<ArrayList<String>> GasMessage = new ArrayList<ArrayList<String>>();
|
|
public static void insert(String hex,String ip) {
|
List<String> tmp = new ArrayList<String>();
|
tmp.add(hex);
|
tmp.add(ip);
|
GasMessage.add((ArrayList<String>) 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());
|
}
|
}
|