Quellcode durchsuchen

fix(environment-hj212-service): 修复数据校验和逻辑并优化消息发送格式

- 在 DataCheckUtil 类中添加了对 crc16_Checkout 方法的异常处理,提高代码健壮性- 在 ServerHandler 类中更新了消息发送格式,在消息前添加了 "##0101"前缀
林仔 vor 1 Jahr
Ursprung
Commit
e53476508d

+ 2 - 2
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/config/ServerHandler.java

@@ -36,11 +36,11 @@ public class ServerHandler extends ChannelInboundHandlerAdapter {
         /**
          * 往客户端发送消息
          */
-        String helo = "QN=20250530085857223;ST=32;CN=2031;PW=123456;MN=0152316A279055;Flag=5;CP=&&BeginTime=20250529000000;EndTime=20250530000000&&";
+        String helo = "##0101QN=20250530085857223;ST=32;CN=2031;PW=123456;MN=0152316A279055;Flag=5;CP=&&BeginTime=20250529000000;EndTime=20250530000000&&";
         ByteBuf byteBuf = Unpooled.wrappedBuffer(helo.getBytes());
         ctx.channel().writeAndFlush(byteBuf);
         System.out.println("首次连接完成!"+byteBuf);
-        String helo2 = "QN=20250530085857223;ST=32;CN=2031;PW=123456;MN=1234567901234;Flag=5;CP=&&BeginTime=20250529000000;EndTime=20250530000000&&";
+        String helo2 = "##0101QN=20250530085857223;ST=32;CN=2031;PW=123456;MN=1234567901234;Flag=5;CP=&&BeginTime=20250529000000;EndTime=20250530000000&&";
         ByteBuf byteBuf3 = Unpooled.wrappedBuffer(helo2.getBytes());
         ctx.channel().writeAndFlush(byteBuf3);
     }

+ 17 - 13
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/utils/DataCheckUtil.java

@@ -15,23 +15,27 @@ public class DataCheckUtil {
      * @return
      */
     public static String crc16_Checkout(String puchMsg, int usDataLen){
-        int i,j,crc_reg,check;
+        try {
+            int i,j,crc_reg,check;
 
-        crc_reg=0xFFFF;
-        char[] chars = puchMsg.toCharArray();
-        for(i=0;i<usDataLen;i++){
-            crc_reg=(crc_reg>>8)^chars[i];
-            for(j=0;j<8;j++) {
-                check = crc_reg&0x0001;
-                crc_reg>>=1;
-                if(check==0x0001) {
-                    crc_reg^=0xA001;
+            crc_reg=0xFFFF;
+            char[] chars = puchMsg.toCharArray();
+            for(i=0;i<usDataLen;i++){
+                crc_reg=(crc_reg>>8)^chars[i];
+                for(j=0;j<8;j++) {
+                    check = crc_reg&0x0001;
+                    crc_reg>>=1;
+                    if(check==0x0001) {
+                        crc_reg^=0xA001;
+                    }
                 }
             }
+            String code = as10to16(crc_reg);
+            return code;
+        }catch (Exception e){
+            e.printStackTrace();
         }
-
-        String code = as10to16(crc_reg);
-        return code;
+        return puchMsg;
     }
 
     /**