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