Browse Source

兼容万全RFID

qzy 1 năm trước cách đây
mục cha
commit
50cdd53d9d

+ 9 - 9
config.xml

@@ -2,7 +2,7 @@
 
 <config>
     <managerSetting>
-        <enable>true</enable>
+        <enable>false</enable>
         <host>10.26.1.25</host>
         <beatPort>8050</beatPort>
         <serverUrl>http://10.26.1.25:9191</serverUrl>
@@ -21,7 +21,7 @@
     <!--设备相关设置-->
     <sysConfig>
         <caputreSetting>
-            <enable>true</enable>
+            <enable>false</enable>
             <host>10.26.6.51</host>
             <port>8000</port>
             <username>admin</username>
@@ -29,25 +29,25 @@
             <brand>5000</brand>
         </caputreSetting>
         <serialSetting>
-            <host>10.26.6.50</host>
+            <host>192.168.0.128</host>
             <weighbridge>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4003</port>
                 <brand>3000</brand>
                 <minKg>1000</minKg>
             </weighbridge>
             <led>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4002</port>
                 <brand>2000</brand>
             </led>
             <electron>
-                <enable>false</enable>
-                <port>4002</port>
-                <brand>2000</brand>
+                <enable>true</enable>
+                <port>1969</port>
+                <brand>3000</brand>
             </electron>
             <plc>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4001</port>
                 <!--输出-->
                 <out>

+ 2 - 1
src/main/java/com/gzlh/device/rfid/brand/ElectronBrandType.java

@@ -7,7 +7,8 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum ElectronBrandType {
 
-    RUI_BRAND(2000,"瑞德电子车牌")
+    RUI_BRAND(2000,"瑞德电子车牌"),
+    WANQUAN_BRAND(3000,"深圳万全vf-946Pro")
     ;
 
 

+ 15 - 0
src/main/java/com/gzlh/device/rfid/enums/CardType.java

@@ -0,0 +1,15 @@
+package com.gzlh.device.rfid.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum CardType {
+
+
+    TYPE_6C("6C"),
+    TYPE_6B("6B");
+
+    private String type;
+}

+ 8 - 0
src/main/java/com/gzlh/device/rfid/handler/IElectronHandler.java

@@ -1,6 +1,7 @@
 package com.gzlh.device.rfid.handler;
 
 import com.gzlh.device.rfid.brand.ElectronBrandType;
+import com.gzlh.device.rfid.enums.CardType;
 
 public interface IElectronHandler {
 
@@ -25,4 +26,11 @@ public interface IElectronHandler {
      */
     void handlerMsg(String msg);
 
+    /**
+     * 设置命令模式
+     * @param commandModule
+     */
+    void setReaderCmdModule(boolean commandModule);
+    void startToRead(CardType cardType);
+
 }

+ 11 - 0
src/main/java/com/gzlh/device/rfid/handler/impl/ElectronHandlerRuiDe.java

@@ -6,6 +6,7 @@ import com.gzlh.bus.EventDataManager;
 import com.gzlh.device.rfid.action.IElectronAction;
 import com.gzlh.device.rfid.brand.ElectronBrandType;
 import com.gzlh.device.rfid.client.ElectronNettyConfig;
+import com.gzlh.device.rfid.enums.CardType;
 import com.gzlh.device.rfid.handler.IElectronHandler;
 import com.gzlh.device.rfid.utils.CheckNumUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -77,6 +78,16 @@ public class ElectronHandlerRuiDe implements IElectronHandler {
         }
     }
 
+    @Override
+    public void setReaderCmdModule(boolean commandModule) {
+
+    }
+
+    @Override
+    public void startToRead(CardType cardType) {
+        readERI();
+    }
+
 
     public void readERI(){
         ERI_CACHE.clear();

+ 71 - 0
src/main/java/com/gzlh/device/rfid/handler/impl/WanQuanHandler.java

@@ -0,0 +1,71 @@
+package com.gzlh.device.rfid.handler.impl;
+
+import com.gzlh.device.rfid.brand.ElectronBrandType;
+import com.gzlh.device.rfid.client.ElectronNettyConfig;
+import com.gzlh.device.rfid.enums.CardType;
+import com.gzlh.device.rfid.handler.IElectronHandler;
+import com.gzlh.device.rfid.utils.RFIDCommandUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class WanQuanHandler implements IElectronHandler {
+    @Resource
+    private ElectronNettyConfig electronNettyConfig;
+    @Override
+    public ElectronBrandType brandType() {
+        return ElectronBrandType.WANQUAN_BRAND;
+    }
+
+    @Override
+    public void handlerAction(String action) {
+
+    }
+
+    @Override
+    public void sendMsg(String msg) {
+        electronNettyConfig.send(msg);
+    }
+
+    @Override
+    public void handlerMsg(String msg) {
+
+    }
+
+    /**
+     * 00 命令模式
+     * 01 自动模式
+     * @param commandModule
+     */
+    @Override
+    public void setReaderCmdModule(boolean commandModule) {
+        String module=commandModule?"00":"01";
+        String []params=new String[]{module};
+        String command= RFIDCommandUtils.buildWanQuanCommand("0D",params);
+        log.info("command:{}",command);
+        this.sendMsg(command);
+    }
+
+    @Override
+    public void startToRead(CardType cardType) {
+        switch (cardType.getType()){
+            case "6C":
+                String command="80";
+                String []params=new String[]{"01","00","00","00000000"};
+                String pack=RFIDCommandUtils.buildWanQuanCommand(command,params);
+                sendMsg(pack);
+                break;
+            default:
+                command="90";
+                params=new String[]{};
+                pack=RFIDCommandUtils.buildWanQuanCommand(command,params);
+                sendMsg(pack);
+                break;
+
+        }
+
+    }
+}

+ 44 - 0
src/main/java/com/gzlh/device/rfid/utils/RFIDCommandUtils.java

@@ -0,0 +1,44 @@
+package com.gzlh.device.rfid.utils;
+
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+@Slf4j
+public class RFIDCommandUtils {
+    /**
+     * header+length+address+cmd+params+check_num
+     * Header:1个字节,包头,固定为40H。
+     * Length:2个字节,包有效长度。该长度为后4个部分(Address+Cmd+Param+Check)的总字节数。先发高字节,后发低字节。例如:长度为270字节时,发送顺序为01H 0EH。
+     * Address:1个字节,用于指定要控制设备的RS485地址,该字段只在RS485通信时有效,当不使用RS485通信时,随意发送1个字节的数据即可。当使用RS485通信时,将此参数设置为0或者255表示广播命令,所有连在RS485总线上的读写器会执行广播命令,但是不会返回响应给上位机。
+     * Cmd:1个字节,命令码。
+     * Param:若干字节,命令参数,其长度随命令而变化。
+     * Check:1个字节,校验和。Header+Length+Address+Cmd+Param求和后取反加1。
+     *
+     * @return
+     */
+    public static String buildWanQuanCommand(String cmd, String[]params){
+        final String head="40";
+        final String address="00";
+        String param= String.join("", params);
+        int len= 1+1+param.length()/2+1;
+        String lenHex= HexUtil.toHex(len);
+        if (len<16){
+            lenHex="000"+lenHex;
+        }else if (len<32){
+            lenHex="00"+lenHex;
+        }
+        String packData=head+lenHex+address+cmd+param;
+        String checkNum=CheckNumUtils.calculateChecksum(packData);
+//        log.info("pack:{}",packData+checkNum);
+        return (packData+checkNum).toUpperCase();
+
+    }
+
+
+}

+ 7 - 0
src/main/java/com/gzlh/startup/StartupRunner.java

@@ -4,6 +4,7 @@ import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.gzlh.background.client.BackgroundClientNetty;
 import com.gzlh.bus.SysConfig;
+import com.gzlh.config.SystemObject;
 import com.gzlh.config.dto.CaputreSetting;
 import com.gzlh.config.dto.SerialSetting;
 import com.gzlh.config.ModuleEnum;
@@ -16,6 +17,7 @@ import com.gzlh.device.led.client.LedNettyConfig;
 import com.gzlh.device.plc.client.PlcNettyConfig;
 import com.gzlh.device.plc.event.PLCEvent;
 import com.gzlh.device.plc.job.SearchJob;
+import com.gzlh.device.rfid.enums.CardType;
 import com.gzlh.device.weighbridge.client.WeighbridgeNettyConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.CommandLineRunner;
@@ -61,6 +63,11 @@ public class StartupRunner implements CommandLineRunner {
         }
         if (serialSetting.getElectron().getEnable()){
             ThreadUtil.execute(() -> electronNettyConfig.connect());
+            ThreadUtil.sleep(3000);
+//            SystemObject.electronFactory.handler(SysConfig.serialSetting.getElectron().getBrand())
+//                    .setReaderCmdModule(true);
+//            SystemObject.electronFactory.handler(SysConfig.serialSetting.getElectron().getBrand())
+//                    .startToRead(CardType.TYPE_6C);
         }
         if (SysConfig.managerSetting.isEnable()) {
             ThreadUtil.execute(() -> backgroundClientNetty.connect());

+ 2 - 2
src/main/resources/application.yml

@@ -5,8 +5,8 @@ file:
   root-path: D:\\file\\
 #海康配置文件
 hk:
-  log-home: D:\project\face\face-admin\logs\hk
-  lib-home: D:\hklib
+  log-home: E:\projects\bayonet\gather-server\logs\hk
+  lib-home: E:\libs\hklib
   lib-path: ${hk.lib-home}\HCNetSDK.dll
   linux-libcrypto-path: ${hk.lib-home}/libcrypto.so.1.1
   linux-libssl-path: ${hk.lib-home}/libssl.so.1.1