From 77cde1f239738190deef7b0754ce6b2cc1c1dbfa Mon Sep 17 00:00:00 2001 From: fengjianguo Date: Thu, 26 Jun 2025 13:50:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 - .../controller/TestController.java | 10 ++---- .../modbus/client/rtu/TestCommPorts.java | 19 +++++------ .../net/client/TcpClient.java | 3 -- .../fjg/openprotocoldemo/run/AppRunning.java | 33 ------------------- .../util/CRC16ModbusUtil.java | 27 ++++++++------- .../openprotocoldemo/util/HexStringUtil.java | 4 +++ .../openprotocoldemo/util/SerialPortUtil.java | 6 +++- .../fjg/openprotocoldemo/util/StringUtil.java | 5 ++- .../OpenProtocolDemoApplicationTests.java | 13 -------- 10 files changed, 40 insertions(+), 81 deletions(-) delete mode 100644 src/test/java/com/fjg/openprotocoldemo/OpenProtocolDemoApplicationTests.java diff --git a/pom.xml b/pom.xml index 7f8764e..f634944 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,6 @@ ${spring-boot.version} com.fjg.openprotocoldemo.OpenProtocolDemoApplication - diff --git a/src/main/java/com/fjg/openprotocoldemo/controller/TestController.java b/src/main/java/com/fjg/openprotocoldemo/controller/TestController.java index 1a78c6e..ccae403 100644 --- a/src/main/java/com/fjg/openprotocoldemo/controller/TestController.java +++ b/src/main/java/com/fjg/openprotocoldemo/controller/TestController.java @@ -1,11 +1,11 @@ package com.fjg.openprotocoldemo.controller; import com.fazecast.jSerialComm.SerialPort; -import com.fjg.openprotocoldemo.modbus.client.rtu.TestCommPorts; import com.fjg.openprotocoldemo.net.client.TcpClient; import com.fjg.openprotocoldemo.protocol.op.TcpClientFactory; import com.fjg.openprotocoldemo.util.SerialPortUtil; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; /** @@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/test") @AllArgsConstructor +@Slf4j public class TestController { - private final TcpClient tcpClient; private final TcpClientFactory tcpClientFactory; @PostMapping("/send") @@ -29,12 +29,8 @@ public class TestController { @PostMapping("/send1") public void send1(@RequestBody String message) { SerialPort serialPort = SerialPort.getCommPort("COM21"); - // 配置串口参数 serialPort.setComPortParameters(9600, 8, SerialPort.ONE_STOP_BIT, SerialPort.NO_PARITY); - SerialPortUtil.readSerialPort(serialPort, message, 10000, bytes -> { - System.out.println(new String(bytes)); - }); -// TestCommPorts.readSerialPort(message); + SerialPortUtil.readSerialPort(serialPort, message, 10000, bytes -> log.debug(new String(bytes))); } } diff --git a/src/main/java/com/fjg/openprotocoldemo/modbus/client/rtu/TestCommPorts.java b/src/main/java/com/fjg/openprotocoldemo/modbus/client/rtu/TestCommPorts.java index 4ee3ad4..ce7636b 100644 --- a/src/main/java/com/fjg/openprotocoldemo/modbus/client/rtu/TestCommPorts.java +++ b/src/main/java/com/fjg/openprotocoldemo/modbus/client/rtu/TestCommPorts.java @@ -32,9 +32,9 @@ public class TestCommPorts implements CommandLineRunner { */ private static void listSerialPorts(){ SerialPort[] ports = SerialPort.getCommPorts(); - System.out.println("可用串口列表:"); + log.debug("可用串口列表:"); for (SerialPort port : ports) { - System.out.println(port.getSystemPortName() + " - " + port.getDescriptivePortName()); + log.debug(port.getSystemPortName() + " - " + port.getDescriptivePortName()); } } @@ -48,17 +48,14 @@ public class TestCommPorts implements CommandLineRunner { // 打开串口 if (serialPort.openPort()) { - System.out.println("串口已打开!"); + log.debug("串口已打开!"); } else { - System.out.println("无法打开串口!"); + log.debug("无法打开串口!"); return; } - - // 在这里可以进行读写操作... - // 关闭串口 serialPort.closePort(); - System.out.println("串口已关闭!"); + log.debug("串口已关闭!"); } @@ -126,13 +123,13 @@ public class TestCommPorts implements CommandLineRunner { } public static void main(String[] args) { -// listSerialPorts(); -// openSerialPort("COM21"); + listSerialPorts(); + openSerialPort("COM21"); } @Override public void run(String... args) throws Exception { -// listenSerialPort(); + // TODO 此处功能待完善 } } diff --git a/src/main/java/com/fjg/openprotocoldemo/net/client/TcpClient.java b/src/main/java/com/fjg/openprotocoldemo/net/client/TcpClient.java index 4c65a5f..c36b5f7 100644 --- a/src/main/java/com/fjg/openprotocoldemo/net/client/TcpClient.java +++ b/src/main/java/com/fjg/openprotocoldemo/net/client/TcpClient.java @@ -2,9 +2,6 @@ package com.fjg.openprotocoldemo.net.client; import com.fjg.openprotocoldemo.net.ConnectionCallback; import com.fjg.openprotocoldemo.net.MessageCallback; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.handler.timeout.IdleStateEvent; /** * @author fengjianguo diff --git a/src/main/java/com/fjg/openprotocoldemo/run/AppRunning.java b/src/main/java/com/fjg/openprotocoldemo/run/AppRunning.java index ae8dfa6..5026dc2 100644 --- a/src/main/java/com/fjg/openprotocoldemo/run/AppRunning.java +++ b/src/main/java/com/fjg/openprotocoldemo/run/AppRunning.java @@ -1,22 +1,10 @@ package com.fjg.openprotocoldemo.run; -import cn.hutool.core.util.HexUtil; -import com.fjg.openprotocoldemo.net.ConnectionCallback; -import com.fjg.openprotocoldemo.net.client.TcpClient; -import com.fjg.openprotocoldemo.protocol.op.OpTcpClient; import com.fjg.openprotocoldemo.protocol.op.TcpClientFactory; import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; -import java.util.Scanner; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.locks.ReentrantLock; /** * @author fengjianguo @@ -26,33 +14,12 @@ import java.util.concurrent.locks.ReentrantLock; @AllArgsConstructor public class AppRunning implements CommandLineRunner { - private final TcpClient tcpClient; private final TcpClientFactory tcpClientFactory; @Override public void run(String... args) throws Exception { // 启动客户端 tcpClientFactory.startAllClients(); -// tcpClient.start(); -// -// // 持续接收用户输入并发送消息 -// Scanner scanner = new Scanner(System.in); -// while (true) { -// System.out.println("Enter a message to send (type 'exit' to quit):"); -// String input = scanner.nextLine(); -// -// if ("exit".equalsIgnoreCase(input)) { -// break; // 用户输入 exit 时退出 -// } -// byte[] bytes = input.getBytes(); -// System.out.println("发送消息:" + bytes); -// // 发送消息到服务器 -// tcpClient.sendMessage(bytes); -// } -// -// // 停止客户端 -// tcpClient.stop(); -// scanner.close(); } diff --git a/src/main/java/com/fjg/openprotocoldemo/util/CRC16ModbusUtil.java b/src/main/java/com/fjg/openprotocoldemo/util/CRC16ModbusUtil.java index bf727d2..68caef3 100644 --- a/src/main/java/com/fjg/openprotocoldemo/util/CRC16ModbusUtil.java +++ b/src/main/java/com/fjg/openprotocoldemo/util/CRC16ModbusUtil.java @@ -1,9 +1,12 @@ package com.fjg.openprotocoldemo.util; +import lombok.extern.slf4j.Slf4j; + /** * @author fengjianguo * @date 2025/5/21 15:53 */ +@Slf4j public class CRC16ModbusUtil { @@ -30,6 +33,7 @@ public class CRC16ModbusUtil { /** * 计算 CRC16-MODBUS 校验码 + * * @param data 原始数据字节数组 * @return CRC16 校验值(short) */ @@ -39,7 +43,8 @@ public class CRC16ModbusUtil { /** * 计算 CRC16-MODBUS 校验码(支持偏移和长度) - * @param data 字节数组 + * + * @param data 字节数组 * @param offset 起始位置 * @param length 数据长度 * @return CRC16 校验值(short) @@ -52,7 +57,7 @@ public class CRC16ModbusUtil { crc = (crc >> 8) ^ CRC_TABLE[index]; } - return (short)(crc & 0xFFFF); + return (short) (crc & 0xFFFF); } /** @@ -61,9 +66,9 @@ public class CRC16ModbusUtil { public static byte[] getCRCBytes(short crc) { byte[] bytes = new byte[2]; // 低位字节(先发) - bytes[0] = (byte)(crc & 0xFF); + bytes[0] = (byte) (crc & 0xFF); // 高位字节(后发) - bytes[1] = (byte)((crc >> 8) & 0xFF); + bytes[1] = (byte) ((crc >> 8) & 0xFF); return bytes; } @@ -105,11 +110,11 @@ public class CRC16ModbusUtil { // 计算 CRC short crc = calculateCRC(data); - System.out.printf("CRC16: 0x%04X\n", crc & 0xFFFF); + log.debug("CRC16: {}", crc & 0xFFFF); // 获取 CRC 校验位(2字节) byte[] crcBytes = getCRCBytes(crc); - System.out.printf("CRC Bytes: [0x%02X, 0x%02X]\n", + log.debug("CRC Bytes: [{}, {}]", crcBytes[0], crcBytes[1]); // 构造完整帧(原始数据 + CRC) @@ -118,11 +123,11 @@ public class CRC16ModbusUtil { System.arraycopy(crcBytes, 0, fullFrame, data.length, crcBytes.length); // 打印完整帧(用于发送) - System.out.print("完整帧(Hex):"); + log.debug("完整帧(Hex):"); for (byte b : fullFrame) { - System.out.printf("%02X ", b & 0xFF); + log.debug("{} ", b & 0xFF); } - System.out.println("========================================================"); + log.debug("========================================================"); // 示例帧:正确帧(含 CRC) byte[] validFrame = new byte[]{ @@ -138,7 +143,7 @@ public class CRC16ModbusUtil { }; // 验证帧是否合法 - System.out.println("validFrame 是否合法: " + isFrameValid(validFrame)); - System.out.println("invalidFrame 是否合法: " + isFrameValid(invalidFrame)); + log.debug("validFrame 是否合法: {}", isFrameValid(validFrame)); + log.debug("invalidFrame 是否合法: {}", isFrameValid(invalidFrame)); } } diff --git a/src/main/java/com/fjg/openprotocoldemo/util/HexStringUtil.java b/src/main/java/com/fjg/openprotocoldemo/util/HexStringUtil.java index 9780a53..4ebe43d 100644 --- a/src/main/java/com/fjg/openprotocoldemo/util/HexStringUtil.java +++ b/src/main/java/com/fjg/openprotocoldemo/util/HexStringUtil.java @@ -5,6 +5,10 @@ package com.fjg.openprotocoldemo.util; * @date 2025/4/22 9:30 */ public class HexStringUtil { + + private HexStringUtil() { + } + /** * 16进制字符串转化为byte数组 * diff --git a/src/main/java/com/fjg/openprotocoldemo/util/SerialPortUtil.java b/src/main/java/com/fjg/openprotocoldemo/util/SerialPortUtil.java index b229bbc..a3b1db3 100644 --- a/src/main/java/com/fjg/openprotocoldemo/util/SerialPortUtil.java +++ b/src/main/java/com/fjg/openprotocoldemo/util/SerialPortUtil.java @@ -15,7 +15,11 @@ import java.util.function.Function; */ @Slf4j public class SerialPortUtil { - private final static Object LOCK = new Object(); + + private SerialPortUtil() { + } + + private static final Object LOCK = new Object(); public static void readSerialPort(SerialPort serialPort, String request, long timeout, Consumer consumer) { synchronized (LOCK) { diff --git a/src/main/java/com/fjg/openprotocoldemo/util/StringUtil.java b/src/main/java/com/fjg/openprotocoldemo/util/StringUtil.java index 364204b..cd9c924 100644 --- a/src/main/java/com/fjg/openprotocoldemo/util/StringUtil.java +++ b/src/main/java/com/fjg/openprotocoldemo/util/StringUtil.java @@ -1,11 +1,14 @@ package com.fjg.openprotocoldemo.util; /** - * * @author fengjianguo * @date 2024/4/3 10:30 */ public class StringUtil { + + private StringUtil() { + } + /** * 数组转字符串 * diff --git a/src/test/java/com/fjg/openprotocoldemo/OpenProtocolDemoApplicationTests.java b/src/test/java/com/fjg/openprotocoldemo/OpenProtocolDemoApplicationTests.java deleted file mode 100644 index a5b52f8..0000000 --- a/src/test/java/com/fjg/openprotocoldemo/OpenProtocolDemoApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.fjg.openprotocoldemo; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class OpenProtocolDemoApplicationTests { - - @Test - void contextLoads() { - } - -} -- Gitee