New file |
| | |
| | | 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; //返回结果 |
| | | } |
| | | |
| | | |
| | | } |