From 4dbd3ce69274c1b48ed569c4e23de63b9f9586b8 Mon Sep 17 00:00:00 2001
From: whyclj <1525436766@qq.com>
Date: 星期四, 20 八月 2020 14:57:46 +0800
Subject: [PATCH] 添加历史上实时数据记录线程以及修复数据更新缓慢bug

---
 ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java |   53 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 46 insertions(+), 7 deletions(-)

diff --git a/ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java b/ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java
index b20a540..eee8918 100644
--- a/ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java
+++ b/ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java
@@ -27,12 +27,19 @@
 	public static Boolean readCoilStatus(int offset,MyModbusMaster master){
 		// 01 Coil Status
 		BaseLocator<Boolean> loc = BaseLocator.coilStatus(master.getSlaveId(), offset);
-		Boolean value = null;;
+		Boolean value = null;
+		boolean isSuccess = true;
 		try {
 			value = master.getMaster().getValue(loc);
 		} catch (ModbusTransportException | ErrorResponseException e) {
-			master.addErrorCount();
 			//e.printStackTrace();
+			isSuccess = false;
+		} finally {
+			if(isSuccess) {
+				master.clearError();
+			}else {
+				master.addErrorCount();
+			}
 		}
 		return value;
 	}
@@ -48,11 +55,18 @@
 		// 02 Input Status
 		BaseLocator<Boolean> loc = BaseLocator.inputStatus(master.getSlaveId(), offset);
 		Boolean value = null;;
+		boolean isSuccess = true;
 		try {
 			value = master.getMaster().getValue(loc);
 		} catch (ModbusTransportException | ErrorResponseException e) {
-			master.addErrorCount();
 			//e.printStackTrace();
+			isSuccess = false;
+		} finally {
+			if(isSuccess) {
+				master.clearError();
+			}else {
+				master.addErrorCount();
+			}
 		}
 		return value;
 	}
@@ -72,12 +86,18 @@
 		// 03 Holding Register类型数据读取
 		BaseLocator<Number> loc = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
 		Number value = null;
+		boolean isSuccess = true;
 		try {
 			value = master.getMaster().getValue(loc);
 		} catch (ModbusTransportException | ErrorResponseException e) {
 			//e.printStackTrace();
-			master.addErrorCount();
-			
+			isSuccess = false;
+		}  finally {
+			if(isSuccess) {
+				master.clearError();
+			}else {
+				master.addErrorCount();
+			}
 		}
 		return value;
 	}
@@ -103,11 +123,18 @@
 		// 04 Input Registers类型数据读取
 		BaseLocator<Number> loc = BaseLocator.inputRegister(master.getSlaveId(), offset, dataType);
 		Number value = null;
+		boolean isSuccess = true;
 		try {
 			value = master.getMaster().getValue(loc);
 		} catch (ModbusTransportException | ErrorResponseException e) {
 			//e.printStackTrace();
-			master.addErrorCount();
+			isSuccess = false;
+		} finally {
+			if(isSuccess) {
+				master.clearError();
+			}else {
+				master.addErrorCount();
+			}
 		}
 		return value;
 	}
@@ -160,6 +187,7 @@
 			master.addErrorCount();
 			return false;
 		} else {
+			master.clearError();
 			return true;
 		}
 	}
@@ -192,6 +220,7 @@
 			master.addErrorCount();
 			return false;
 		} else {
+			master.clearError();
 			return true;
 		}
  
@@ -221,6 +250,7 @@
 			master.addErrorCount();
 			return false;
 		} else {
+			master.clearError();
 			return true;
 		}
  
@@ -256,6 +286,7 @@
 			master.addErrorCount();
 			return false;
 		} else {
+			master.clearError();
 			return true;
 		}
 	}
@@ -275,10 +306,18 @@
 		ModbusMaster tcpMaster = master.getMaster();
 		// 类型
 		BaseLocator<Number> locator = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
+		boolean isSuccess = true;
 		try {
 			tcpMaster.setValue(locator, value);
 		} catch (ModbusTransportException | ErrorResponseException e) {
-			e.printStackTrace();
+			//e.printStackTrace();
+			isSuccess = true;
+		} finally {
+			if(isSuccess) {
+				master.clearError();
+			}else {
+				master.addErrorCount();
+			}
 		}
 	}
 }

--
Gitblit v1.9.1