From e163b7b3e4d5acc63cfda2fec2dd9034864ccf7a Mon Sep 17 00:00:00 2001 From: whyclj <1525436766@qq.com> Date: 星期六, 17 十月 2020 12:01:49 +0800 Subject: [PATCH] 水冷添加历史实时数据记录功能 --- WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java | 248 +++++++++++++++++++++++++++---------------------- 1 files changed, 137 insertions(+), 111 deletions(-) diff --git a/WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java b/WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java index a9e8d75..b8717ae 100644 --- a/WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java +++ b/WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java @@ -1,111 +1,137 @@ -package com.modbus.data; - -import java.text.NumberFormat; - -import com.base.ComBase; -import com.serotonin.modbus4j.ModbusMaster; -import com.serotonin.modbus4j.ip.IpParameters; - -public class MyModbusMaster { - public final static int SLAVEID_DEFAULT = 2; - - public final static int MAX_ERROR_COUNT = 2; //最大连续错误计数 - private ModbusMaster master; - private int errcount; //错误计数 错误连续超过三个时重新获取master - private String target_ip; //目标ip - private int slaveId; //设备ID - - public MyModbusMaster(String target_ip,int slaveId) { - this.target_ip = target_ip; - this.slaveId = slaveId; - IpParameters params = new IpParameters(); - params.setHost(target_ip); - this.master = MyModbusFactory.getMaster(params); - } - - public void addErrorCount() { - this.errcount++; - if(this.errcount > MAX_ERROR_COUNT) { - reConnect(); - } - } - - public void reConnect() { - IpParameters params = new IpParameters(); - params.setHost(target_ip); - if(this.master != null) { - //清空上一个master - this.master.destroy(); - } - this.errcount = 0; - this.master = MyModbusFactory.getMaster(params); - } - - /** - * 判断获取到的值是否为空 - * @param target - * @param source - * @return - */ - public static Object checkNullData(Object target,Object source) { - if(null == target) { - return source; - } - try { - if(target instanceof Number) { - if(source instanceof Integer) { - return ((Number) target).intValue(); - }else if(source instanceof Float) { - return ((Number) target).floatValue(); - } - } - if(target instanceof Boolean) { - //判断Boolean类型数据 - if((Boolean)target) { - target = 1; - }else { - target = 0; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return target; - - } - - public ModbusMaster getMaster() { - return master; - } - public int getErrcount() { - return errcount; - } - public void setMaster(ModbusMaster master) { - this.master = master; - } - public void setErrcount(int errcount) { - this.errcount = errcount; - } - - public String getTarget_ip() { - return target_ip; - } - - public void setTarget_ip(String target_ip) { - this.target_ip = target_ip; - } - - public int getSlaveId() { - return slaveId; - } - - public void setSlaveId(int slaveId) { - this.slaveId = slaveId; - } - - @Override - public String toString() { - return "MyModbusMaster [SLAVEID_DEFAULT=" + SLAVEID_DEFAULT + ", master=" + master + ", errcount=" + errcount - + ", target_ip=" + target_ip + ", slaveId=" + slaveId + "]"; - } -} +package com.modbus.data; + +import com.serotonin.modbus4j.ModbusMaster; +import com.serotonin.modbus4j.ip.IpParameters; + +public class MyModbusMaster { + public final static int SLAVEID_DEFAULT = 2; + + public final static int MAX_ERROR_COUNT = 2; //最大连续错误计数 + public final static int LOSE_CONNECT_COUNT = 20; //通讯中断最大计数 + + private ModbusMaster master; + private int errcount; //错误计数 错误连续超过三个时重新获取master + private int totalerr = 31; //总的错误计数[默认失去连接] 用于判别设备是否掉线 + private String target_ip; //目标ip + private int slaveId; //设备ID + + public MyModbusMaster(String target_ip,int slaveId) { + this.target_ip = target_ip; + this.slaveId = slaveId; + IpParameters params = new IpParameters(); + params.setHost(target_ip); + this.master = MyModbusFactory.getMaster(params); + } + + public void addErrorCount() { + this.errcount++; + if(this.errcount > MAX_ERROR_COUNT) { + reConnect(); + } + if(this.totalerr > 99999999) { + this.totalerr = 5; + } + this.totalerr ++; + } + + //清空错误计数 + public void clearError() { + errcount = 0; + totalerr = 0; + } + + public void reConnect() { + //System.out.println(target_ip); + IpParameters params = new IpParameters(); + params.setHost(target_ip); + if(this.master != null) { + //清空上一个master + this.master.destroy(); + } + this.errcount = 0; + this.master = MyModbusFactory.getMaster(params); + } + + /** + * 判断获取到的值是否为空 + * @param target + * @param source + * @return + */ + public static Object checkNullData(Object target,Object source) { + if(null == target) { + return source; + } + try { + if(target instanceof Number) { + if(source instanceof Integer) { + return ((Number) target).intValue(); + }else if(source instanceof Float) { + return ((Number) target).floatValue(); + } + } + if(target instanceof Boolean) { + //判断Boolean类型数据 + if((Boolean)target) { + target = 1; + }else { + target = 0; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return target; + + } + + public int getConnectState() { + if(this.totalerr < LOSE_CONNECT_COUNT) { + return 1; + } + return 0; + } + + public int getTotalerr() { + return totalerr; + } + + public void setTotalerr(int totalerr) { + this.totalerr = totalerr; + } + + public ModbusMaster getMaster() { + return master; + } + public int getErrcount() { + return errcount; + } + public void setMaster(ModbusMaster master) { + this.master = master; + } + public void setErrcount(int errcount) { + this.errcount = errcount; + } + + public String getTarget_ip() { + return target_ip; + } + + public void setTarget_ip(String target_ip) { + this.target_ip = target_ip; + } + + public int getSlaveId() { + return slaveId; + } + + public void setSlaveId(int slaveId) { + this.slaveId = slaveId; + } + + @Override + public String toString() { + return "MyModbusMaster [SLAVEID_DEFAULT=" + SLAVEID_DEFAULT + ", master=" + master + ", errcount=" + errcount + + ", target_ip=" + target_ip + ", slaveId=" + slaveId + "]"; + } +} -- Gitblit v1.9.1