diff --git a/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java b/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java index c8bcab0d..77529ff0 100644 --- a/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java @@ -259,12 +259,6 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService { //获取检验单号 @Transactional public String getInspectionOrderNumber(String modbusIp, int modbusPort, int registerAddress, int registerNum, int unitId) { - log.info("modbus请求开始解析"); -// String modbusIp = "172.26.58.222"; -// int modbusPort = 502; -// int registerAddress = 299; -// int registerNum = 11; -// int unitId = 1; log.info("获取modbus设备ip-端口-地址值-数量-unitId:{}-{}-{}-{}-{}", modbusIp, modbusPort, registerAddress, registerNum, unitId); long startTime = System.nanoTime(); String finalString = ""; @@ -286,7 +280,7 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService { // 执行Modbus TCP事务 transaction.execute(); - log.info("开始执行modbus tcp事物"); + log.info("开始执行{}modbus tcp事物",modbusIp); // 获取响应 ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse(); @@ -295,44 +289,39 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService { double elapsedTimeInSeconds = (double) elapsedTimeInNanos / 1_000_000_000.0; log.info("时间elapsedTimeInSeconds: {}", elapsedTimeInSeconds); - log.info("打印响应的数据: {}", response.getMessage()); - if (response != null) { - InputRegister[] registers = response.getRegisters(); - ArrayList byteArrayList = new ArrayList(); - for (InputRegister register : registers) { - short value = register.toShort(); - log.info("short类型: {}", value); - // 创建一个长度为 2 的字节数组 - byte[] byteArray = new byte[2]; - // 将 short 值转换成字节数组 - byteArray[1] = (byte) (value & 0xff); // 获取低位字节 - byteArray[0] = (byte) ((value >> 8) & 0xff); // 获取高位字节 - byteArrayList.add(byteArray); - } + log.info("打印响应的数据IP:{}: {}",modbusIp, response.getMessage()); + InputRegister[] registers = response.getRegisters(); + ArrayList byteArrayList = new ArrayList(); + for (InputRegister register : registers) { + short value = register.toShort(); + log.info("short类型: {}", value); + // 创建一个长度为 2 的字节数组 + byte[] byteArray = new byte[2]; + // 将 short 值转换成字节数组 + byteArray[1] = (byte) (value & 0xff); // 获取低位字节 + byteArray[0] = (byte) ((value >> 8) & 0xff); // 获取高位字节 + byteArrayList.add(byteArray); + } - // 将字节数组列表转换为字符串 - StringBuilder stringBuilder = new StringBuilder(); - for (byte[] byteArray : byteArrayList) { - stringBuilder.append(new String(byteArray, StandardCharsets.UTF_8)); - } - //复制需要返回的string值 - finalString = stringBuilder.toString(); - log.info("转换后的字符串: {}", finalString); - - if (StringUtils.isEmpty(finalString) || finalString.trim().equals("")) {//判断是空或者是寄存器是零的话就返回 - log.info("没有值或者已被清零"); - } else { - //如果不是零的话就对寄存器清零 - deleteForModbus(registerAddress, registerNum, unitId, connection); - } + // 将字节数组列表转换为字符串 + StringBuilder stringBuilder = new StringBuilder(); + for (byte[] byteArray : byteArrayList) { + stringBuilder.append(new String(byteArray, StandardCharsets.UTF_8)); + } + //复制需要返回的string值 + finalString = stringBuilder.toString(); + log.info("转换后的字符串: {}", finalString); + + if (StringUtils.isEmpty(finalString) || finalString.trim().equals("")) {//判断是空或者是寄存器是零的话就返回 + log.info("没有值或者已被清零"); } else { - log.info("处理数据出现异常"); + //如果不是零的话就对寄存器清零 + deleteForModbus(registerAddress, registerNum, unitId, connection); } // 关闭连接 connection.close(); - log.info("关闭连接"); } catch (Exception e) { - log.error("连接Modbus设备时出现异常: {}", e.getMessage()); + log.error("连接IP{}Modbus设备时出现异常: {}", modbusIp,e.getMessage()); e.printStackTrace(); } return finalString;