New file |
| | |
| | | package builder; |
| | | |
| | | import java.io.BufferedWriter; |
| | | import java.io.OutputStreamWriter; |
| | | import java.net.Socket; |
| | | import java.sql.Connection; |
| | | import java.sql.PreparedStatement; |
| | | import java.sql.ResultSet; |
| | | import java.sql.SQLException; |
| | | |
| | | import org.json.JSONArray; |
| | | |
| | | import ng.db.DBHelper; |
| | | import ng.db.DBSession; |
| | | import ng.devices.HexUtil; |
| | | |
| | | public class Manager { |
| | | //设备管理器 |
| | | static MachineManager mmgr; |
| | | //优化排版管理器 |
| | | static PaibanManager panban_mgr; |
| | | |
| | | //初始化各种模块 |
| | | static void init() throws Exception { |
| | | |
| | | //初始化数据库模块 |
| | | DBHelper.InitHelper(); |
| | | mmgr = new MachineManager(); |
| | | //panban_mgr=new PaibanManager(); |
| | | //panban_mgr.initPainbanManager(); |
| | | |
| | | } |
| | | |
| | | static void init(String[] con) throws Exception { |
| | | |
| | | //初始化数据库模块 |
| | | |
| | | DBHelper.addHelper("mes",con[0],con[1],con[2]); |
| | | mmgr = new MachineManager(); |
| | | // panban_mgr=new PaibanManager(); |
| | | // panban_mgr.initPainbanManager(con[0],con[1],con[2]); |
| | | |
| | | } |
| | | |
| | | |
| | | public static boolean isStart(){ |
| | | return state; |
| | | } |
| | | |
| | | //是否已经启动 |
| | | static boolean state = false; |
| | | |
| | | //Manager启动函数 |
| | | public static void appStart(String[] ss) { |
| | | if (state == false) { |
| | | try { |
| | | //初始化管理器 |
| | | Manager.init(ss); |
| | | //从数据库配置创建设备 |
| | | Manager.buildDevice(); |
| | | //启动所有设备通讯 |
| | | Manager.mmgr.RunAll(); |
| | | //启动标志 |
| | | state = true; |
| | | } catch (Exception e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //获取所有设备信息生成JSON数组 |
| | | public static JSONArray getDevice(){ |
| | | return mmgr.getContext(); |
| | | } |
| | | |
| | | |
| | | //从数据库创建所有设备 |
| | | static void buildDevice(){ |
| | | |
| | | DBSession sn=null; |
| | | try{ |
| | | //读取设备列表 |
| | | DBHelper db=DBHelper.getDBHelper("mes"); |
| | | sn=DBHelper.getDBHelper("mes").createSession(false); |
| | | sn.createSql("select id,machine_name,ip_address,port,flag,read_size,read_offset,function_type,flag from machine"); |
| | | ResultSet set= sn.query().getCurrentResult(); |
| | | //创建所有设备通讯 |
| | | while(set.next()){ |
| | | int id=(int)set.getLong(1); |
| | | String name=set.getString(2); |
| | | String ip=set.getString(3); |
| | | int port=set.getInt(4); |
| | | int flag=set.getInt(5); |
| | | int readSize=set.getInt(6); |
| | | int readOffset=set.getInt(7); |
| | | byte functionType=set.getByte(8); |
| | | int flags=set.getInt(9); |
| | | if(flags==1){ |
| | | mmgr.createDevice(db,id,name,ip,port,readOffset,readSize,null,functionType); |
| | | } |
| | | |
| | | } |
| | | } |
| | | catch(Exception e){ |
| | | |
| | | } |
| | | finally{ |
| | | if(sn!=null) |
| | | sn.close(); |
| | | } |
| | | mmgr.RunAll(); |
| | | } |
| | | |
| | | //异常记录(这里做一次封装是为了可以记录异常,比如记录到日志文件或数据库等) |
| | | public static void catchException(String sender,Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | //允许存储过程向框架发送消息实现Mysql回调机制 |
| | | public static void SendMessage(String message){ |
| | | try{ |
| | | char c=message.charAt(0); |
| | | message=message.substring(1,message.length()); |
| | | //#代表一个功能执行 @仅代表一个消息提醒 |
| | | if(c=='#'){ |
| | | String[] ss=message.split(",");//读取命令参数 |
| | | switch(ss[0]){ |
| | | //参数名为钢化排版(该函数在新MES方案中取消,或者选择性使用,改用提前排版) |
| | | case "paiban": |
| | | int line=Integer.parseInt(ss[1]);//线号参数 |
| | | Manager.panban_mgr.Paiban(line); |
| | | return; |
| | | default: |
| | | System.out.println("未知命令消息:"+message); |
| | | return; |
| | | } |
| | | } |
| | | else{ |
| | | System.out.println("msg:"+message); |
| | | } |
| | | } |
| | | catch(Exception e){ |
| | | catchException("manger.SendFlagMessage",e); |
| | | } |
| | | } |
| | | |
| | | public static void sendtoPLC(int deviceID, int Address, int count, String buffer, int offset) { |
| | | try { |
| | | System.out.println(buffer); |
| | | byte[] bb= HexUtil.stringToInt(buffer); |
| | | mmgr.innerGetItem(deviceID).serv.SendPLC(Address, count, bb, offset); |
| | | String ss=""; |
| | | for (int i = 0; i < bb.length; i++) { |
| | | ss+=ss+bb[i]+","; |
| | | } |
| | | System.out.println(ss); |
| | | }catch (Exception e) { |
| | | // TODO: handle exception |
| | | System.out.println(deviceID+"号机器未连接"); |
| | | } |
| | | |
| | | } |
| | | |
| | | public static void dayin(int leixing,String peifenhao){ |
| | | try { |
| | | Socket sk= new Socket("192.168.20.195",9100); |
| | | |
| | | try { |
| | | leixing=1; |
| | | String str1="^Kkuandao\n"+peifenhao+"\ngetElectric\n~p1\n"; |
| | | String str2="~S,BUFCLR\n"; |
| | | String str3="~S,PAUSE\n"; |
| | | |
| | | |
| | | BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())); |
| | | |
| | | if(leixing==1){ |
| | | bw.write(str1); |
| | | bw.newLine(); |
| | | bw.flush(); |
| | | }else{ |
| | | bw.write(str2); |
| | | bw.newLine(); |
| | | bw.flush(); |
| | | Thread.sleep(100); |
| | | bw.write(str3); |
| | | bw.newLine(); |
| | | bw.flush(); |
| | | Thread.sleep(3000); |
| | | bw.write(str2); |
| | | bw.newLine(); //写后换行 |
| | | bw.flush(); //表示刷新,也就是立即写给对方 |
| | | } |
| | | |
| | | sk.close(); |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | // TODO: handle exception |
| | | System.out.println("其他"); |
| | | } |
| | | } catch (Exception e) { |
| | | // TODO: handle exception |
| | | System.out.println("错误"); |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args){ |
| | | //Manager.appStart(new String[]{"jdbc:mysql://10.153.19.150/gmms?serverTimezone=GMT%2B8","root","beibo.123/" }); |
| | | while(true){ |
| | | try { |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | } |