From 979f95e192e306bf8ae6552415d20c57015baab4 Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期三, 22 十月 2025 13:59:05 +0800
Subject: [PATCH] 优化:短连接+抛异常 防止异常导致端口占用 无法连接设备

---
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java |   33 ++++++++++++++++++---------------
 1 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
index 525d9e9..4435046 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
@@ -53,26 +53,29 @@
     }
     public void readData() {
         try {
-            byte[] resultValues=plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
-
-//            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
-//            int maxRead=1092;
-//            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
-//                    (PlcMesObject.getPlcAddressLength()/maxRead):
-//                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
-//            for (int i = 0; i <size ; i++) {
-//                int begin=i*maxRead;
-//                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
-//                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
-//                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
-//                System.arraycopy(getplcvlues,0,resultValues,begin,length);
-//            }
+            byte[] resultValues;
+            if (PlcMesObject.getPlcAddressLength()>1092){
+                resultValues=new byte[PlcMesObject.getPlcAddressLength()];
+                int maxRead=1092;
+                int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
+                        (PlcMesObject.getPlcAddressLength()/maxRead):
+                        (PlcMesObject.getPlcAddressLength()/maxRead+1);
+                for (int i = 0; i <size ; i++) {
+                    int begin=i*maxRead;
+                    int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
+                    String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
+                    byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
+                    System.arraycopy(getplcvlues,0,resultValues,begin,length);
+                }
+            }else{
+                resultValues=plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
+            }
             if (resultValues.length>0) {
                 PlcMesObject.setPlcParameterList(resultValues);
             }
         } catch (Exception e) {
+            log.info("寮傚父:ip:{},port:{},閰嶇疆{},{}",this.ip,this.port,PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
             PlcMesObject=null;
-            log.info("寮傚父:ip:{},port:{},閿欒{},{}",this.ip,this.port,e.getMessage(),e.toString());
         }
     }
 }

--
Gitblit v1.8.0