package com.hxzkoa.udp; import java.util.List; import java.util.Vector; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.hxzkoa.json.tb_tag; /** 处理需要使用的标签 */ public class Dell_usetaganchor { static Vector useta = new Vector(); /** 获取标签需要用来计算的基站 */ public static Vector getUseta() { return useta; } /** 插入一个标签需要用来测距的基站 */ public static void insert_taganchor(String tagid, String anchorid1, String anchorid2, String anchorid3, String anchorid4, boolean use) { if (get_UseTagAndAnchor(tagid) == null) { UseTagAndAnchor newusetaganc = new UseTagAndAnchor(); newusetaganc.setTagid(tagid); newusetaganc.setAnchorid1(anchorid1); newusetaganc.setAnchorid2(anchorid2); newusetaganc.setAnchorid3(anchorid3); newusetaganc.setAnchorid4(anchorid4); newusetaganc.setUse(use); useta.add(newusetaganc); } } /** 寻找某个标签对象 */ public static UseTagAndAnchor get_UseTagAndAnchor(String tagid) { UseTagAndAnchor uta = null; if (useta.size() != 0) { for (int i = 0; i < useta.size(); i++) { UseTagAndAnchor uta1 = useta.get(i); String tagid1 = uta1.getTagid(); if (tagid1.equals(tagid)) { uta = uta1; break; } } } return uta; } /** 改变标签的使用状态 */ public static void alert_use(String tagid, boolean use) { if (get_UseTagAndAnchor(tagid) != null) { get_UseTagAndAnchor(tagid).setUse(use); } } /** 修改某个标签对象 */ public static void alert_taganc(String tagid, String anchorid1, String anchorid2, String anchorid3, String anchorid4, boolean use) { get_UseTagAndAnchor(tagid).setAnchorid1(anchorid1); get_UseTagAndAnchor(tagid).setAnchorid2(anchorid2); get_UseTagAndAnchor(tagid).setAnchorid3(anchorid3); get_UseTagAndAnchor(tagid).setAnchorid4(anchorid4); get_UseTagAndAnchor(tagid).setUse(true); } public static void dell_udp_message(String message) { // 获取 port,wifi_mode List tagList = null; String port = ""; String wifi_mode = ""; String info = message.toUpperCase(); String[] mess = info.split(","); if (mess.length == 5) { // 指令类型 String zhiling = replace(mess[1]); // 下发标签振动指令 if (zhiling.equals("TAG_SHAKE")) { String tagid = replace(mess[3]); int time = Integer.parseInt(replace(mess[2])); if (tagid.equals("ALL")) { tagid = "所有标签"; } ControTag.set_tag_zhendong(time, tagid, tagList, port, wifi_mode); // 开启或者关闭标签的休眠功能 } else if (zhiling.equals("OPEN_OR_CLOSE_SLEEP")) { int time = Integer.parseInt(replace(mess[2])); String tagid = replace(mess[3]); if (tagid.equals("ALL")) { tagid = "所有标签"; } ControTag.set_tag_sleep_open(time, tagid, tagList, port, wifi_mode); // 修改标签的休眠时间 } else if (zhiling.equals("ALERT_SLEEP_TIME")) { int time = Integer.parseInt(replace(mess[2])); String tagid = replace(mess[3]); if (tagid.equals("ALL")) { tagid = "所有标签"; } ControTag.set_tag_sleep_time(time, tagid, tagList, port, wifi_mode); // 修改标签的频率 } else if (zhiling.equals("ALERT_TAG_HZ")) { String time = replace(mess[2]); String tagid = replace(mess[3]); if (tagid.equals("ALL")) { tagid = "所有标签"; } ControTag.set_tag_hz(time, tagid, tagList, port, wifi_mode); } // 55BB,[标签id],[基站1id],[基站2id],[基站4id],[开始] } else if (mess.length == 6) { boolean use = false; if (mess[6].equals("1")) { use = true; } // 如果标签存在 if (get_UseTagAndAnchor(mess[1]) == null) { insert_taganchor(mess[1], mess[2], mess[3], mess[4], mess[5], use); } else { alert_taganc(mess[1], mess[2], mess[3], mess[4], mess[5], use); } } info = null; mess = null; } /** 去掉字符串中的换行空格回车 */ public static String replace(String str) { String destination = ""; if (str != null) { Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(str); destination = m.replaceAll(""); } return destination; } }