package com.mes.util; import com.mes.ui.ConfigParam; import com.mes.ui.MesClient; import com.mes.util.ytnetty.YtNettyClient; import com.mes.util.ytnetty.YtUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.awt.*; import java.util.Arrays; import java.util.Timer; import java.util.TimerTask; public class CommonQmDevice { public static final Logger log = LoggerFactory.getLogger(SerialPortUtils.class); public String device; public SerialPortUtils serialPortUtils; // 串口 public YtNettyClient ytClient; // 网口 中皖英泰 public boolean isOnline; // 是否在线 ConfigParam configParam; public CommonQmDevice(ConfigParam configParam) { this.device = configParam.getDevice(); this.configParam = configParam; if(configParam.getDevice().equals("中皖英泰")){ try { if(ytClient==null) { String ip = configParam.getSerialPort(); String port = configParam.getBaudRate(); //初始化TCP连接 ytClient = new YtNettyClient(); try{ ytClient.run(ip,Integer.parseInt(port)); // ytClient.run("192.168.0.253",3036); workTimerTask(); }catch (Exception e){ e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } }else{ // 串口 serialPortUtils = new SerialPortUtils(configParam.getSerialPort(),"","",configParam.getDevice()); } } public boolean isOnline() { isOnline = false; if(device.equals("中皖英泰")){ isOnline = ytClient.getTcpOnline() == 1; }else{ // 串口 isOnline = serialPortUtils.isOpen; } return isOnline; } public void reconnect(){ if(device.equals("中皖英泰")){ try { ytClient = null; String ip = configParam.getSerialPort(); String port = configParam.getBaudRate(); //初始化TCP连接 ytClient = new YtNettyClient(); try{ ytClient.run(ip,Integer.parseInt(port)); // ytClient.run("192.168.0.253",3036); workTimerTask(); }catch (Exception e){ e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } }else{ // 串口 serialPortUtils = new SerialPortUtils(configParam.getSerialPort(),"","",configParam.getDevice()); } } public Timer workTimer; public void workTimerTask() { if(workTimer!=null) { workTimer.cancel(); } workTimer = new Timer(); workTimer.schedule(new TimerTask() { public void run() { try{ if (MesClient.work_status == 1) { // 循环查询实时结果 ytClient.future.channel().writeAndFlush(YtUtil.getSendByteBuf(YtUtil.getCurDataCommon())); } }catch (Exception e){ e.printStackTrace(); } } }, 500, 500); } public boolean start() { try{ if(device.equals("中皖英泰")){ ytClient.future.channel().writeAndFlush(YtUtil.getSendByteBuf(YtUtil.getStartCommon())); }else{ // 串口 serialPortUtils.start(); } }catch (Exception e){ e.printStackTrace(); return false; } return true; } }