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