廖井涛
2024-03-04 eae17d27ec56a6b7887f5597335e38ca40273ef4
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
148
package builder;
import ng.devices.*;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
 
import org.json.*;
 
import ng.db.DBHelper;
import ng.db.DBSession;
import ng.devices.*;
public class MachineManager {
   
    
        
        
    
    
    
    class item  {
        public DBHelper helper;
        public MysqlService serv;
        public int ID;
        public String IP;
        public int Port;
        public int ReadOffset;
        public int ReadSize;
        public String ProcName;
        public String Name;
        public byte FunctionType;
    
    }
    List<item> items=new ArrayList<item>();
    
    public void RunAll(){
       for(item it:items){
           Run(it.Name);
         
       }
    }
    
    
    public void Run(String name){
        item itm=null;
        synchronized(items){
           itm=innerGetItem(name);
        }
        if(itm!=null){
            if(itm.serv==null){
                itm.serv=new MysqlService(itm.helper,itm.ID);
                itm.serv.Run(itm.ID,itm.IP,itm.Port, (byte)1,itm.ReadOffset, itm.ReadSize,1000,itm.FunctionType);
                System.out.println(String.format("É豸Æô¶¯-{%s}(%s)(%s)",itm.Name,itm.IP,itm.FunctionType));
            }
        }
    }
    
    private item innerGetItem(String name){
        for(int i=0;i<items.size();i++){
            if(name==items.get(i).Name)
                return items.get(i);
        }
        return null;
    }
    
    public item innerGetItem(int id){
        for(int i=0;i<items.size();i++){
            if(id==items.get(i).ID)
                return items.get(i);
        }
        return null;
    }
    
    
    
    public void createDevice(DBHelper helper,int DeviceID,String Name,String Ip,int Port,int ReadOffset,int ReadSize,String ProcName,byte FunctionType){
        synchronized(items){
            
            item itm=new item();
            itm.helper=helper;                //Êý¾Ý¿â
            itm.ProcName=ProcName;            //´æ´¢¹ý³ÌÃû
            itm.Name=Name;                    //É豸Ãû    
            itm.ID=DeviceID;                //É豸ID
            itm.IP=Ip;                        //É豸IP
            itm.Port=Port;                    //É豸¶Ë¿Ú
            itm.ReadOffset=ReadOffset;        //¶ÁÈ¡Æ«ÒÆ
            itm.ReadSize=ReadSize;//·¢ËÍÆ«ÒÆ
            itm.FunctionType=FunctionType;
            /*if(DeviceID==6 || DeviceID==19 || DeviceID==29 || DeviceID==30){
                itm.ReadOffset=12000;
            }*/
            items.add(itm);
        
        }
    }
    
    
    //½«É豸ÐÅϢת»¯ÎªJSONÊý×飬ÓÃÓÚǰ̨ÏÔʾ
    public JSONArray getContext(){
        JSONArray arr=new JSONArray();
        for(int i=0;i<this.items.size();i++){
            item it=this.items.get(i);
            JSONObject obj=new JSONObject();
            try {
                obj.put("ip", it.IP);            //·ÅÈëIP
                obj.put("port",it.Port);        //·ÅÈë¶Ë¿Ú
                obj.put("name",it.Name);        //·ÅÈëÉ豸Ãû
                obj.put("id", it.ID);            //·ÅÈëID
            
                String send="---";
                String get="---";
                if(it.serv!=null){
                obj.put("count", it.serv.ioCount);  //·ÅÈë¶ÁÈ¡´ÎÊý
                    send=it.serv.lastSend;            
                    get=it.serv.lastGet;        
                    if(send==null)
                        send="---";
                    if(get==null){
                        get="---";
                    }
                }
                else{
                    obj.put("count", 0);
                }
                obj.put("send", send);  //·ÅÈë×îºóÒ»´Î·¢ËÍÐÅÏ¢    
                obj.put("get", get);        //·ÅÈë×îºóÒ»´Î¶ÁÈ¡ÐÅÏ¢
                obj.put("dev_state", it.serv.zhangtai);
                String st="Ïß³Ì먦Æô";
                if(it.serv!=null){
                    if(it.serv.isRunning())
                    st="δÁ¬½Ó";
                    if(it.serv.isOnLine()){
                        st="ÒÑÁ¬½Ó";
                    }
                }
                obj.put("st",st);    //·ÅÈëÏß³Ì״̬
                arr.put(obj);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        return arr;  //·µ»Ø½á¹û
    }
    
    
}