From e1f3896f2434f829d284161552758e392cb21835 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq,com> Date: 星期四, 10 九月 2020 18:11:15 +0800 Subject: [PATCH] 修改 --- WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java | 241 ++++++++++++++++++++++++++---------------------- 1 files changed, 130 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..283d680 100644 --- a/WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java +++ b/WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java @@ -1,111 +1,130 @@ -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 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 int totalerr; //总的错误计数 //用于判别设备是否掉线 + 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() { + 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 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