yzt
2023-05-05 953cbbf76091fee9d40045f91c06daee496fe5b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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;
    }
 
}