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<UseTagAndAnchor> useta = new Vector<UseTagAndAnchor>();
|
|
/** 获取标签需要用来计算的基站 */
|
public static Vector<UseTagAndAnchor> 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<tb_tag> 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;
|
}
|
|
}
|