hecheng %!s(int64=3) %!d(string=hai) anos
pai
achega
5e34c3fae1

+ 5 - 0
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDClientImpl.java

@@ -122,6 +122,11 @@ public class DeJuRFIDClientImpl implements IService {
         if (0 != msgBaseInventoryEpc.getRtCode()) {
             log.error("Inventory epc error.");
             reConnect(hardware, client);
+            return;
+        }
+        boolean changeGpi = DeJuRFIDServerImpl.setGpi(client);
+        if (!changeGpi){
+            reConnect(hardware,client);
         }
     }
 

+ 43 - 2
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDServerImpl.java

@@ -21,7 +21,6 @@ import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * @author Administrator
@@ -70,6 +69,13 @@ public class DeJuRFIDServerImpl implements IService {
         }
         if (client.openTcp(ipAddress, TIME_OUT)) {
             stopMsg(client);
+            boolean change = setGpi(client);
+            if (!change){
+                log.info("GPI epc error.");
+                close(hardware);
+                open(hardware);
+                return;
+            }
             MsgBaseSetBaseband msgBaseSetBaseband = setSession(hardware, client);
             if (0 != msgBaseSetBaseband.getRtCode()) {
                 log.info("Session epc error.");
@@ -213,6 +219,37 @@ public class DeJuRFIDServerImpl implements IService {
         return msgBaseSetBaseband;
     }
 
+    public static boolean setGpi(GClient client) {
+        MsgAppGetGpiState gpiState=new MsgAppGetGpiState();
+        client.sendSynMsg(gpiState);
+        HashMap<Integer, Integer> hashMap = gpiState.getHpGpiState();
+        boolean change=true;
+        for (Map.Entry<Integer,Integer> entry:hashMap.entrySet()) {
+            Integer k = entry.getKey();
+            MsgAppGetGpiTrigger getGpiTrigger = new MsgAppGetGpiTrigger();
+            getGpiTrigger.setGpiPort(k-1);
+            client.sendSynMsg(getGpiTrigger);
+            if (getGpiTrigger.getRtCode()==0){
+                int triggerOver = getGpiTrigger.getTriggerOver();
+                int triggerStart = getGpiTrigger.getTriggerStart();
+                if (triggerStart!=0|| triggerOver!=0){
+                    MsgAppSetGpiTrigger gpiTrigger = new MsgAppSetGpiTrigger();
+                    gpiTrigger.setGpiPort(getGpiTrigger.getGpiPort());
+                    gpiTrigger.setTriggerOver(0);
+                    gpiTrigger.setTriggerStart(0);
+                    client.sendSynMsg(gpiTrigger);
+                    if (0 != gpiTrigger.getRtCode()) {
+                        log.info("GPI epc error.");
+                        change=false;
+                    } else {
+                        log.info("GPI epc success.");
+                    }
+                }
+            }
+        }
+        return change;
+    }
+
     @Override
     public void disconnect(RemoteLabHardware hardware) {
         close(hardware);
@@ -333,6 +370,10 @@ public class DeJuRFIDServerImpl implements IService {
                 }
             }
         };
-        client.onTagEpcOver = (s, logBaseEpcOver) -> log.info("HandlerTagEpcOver");
+        client.onTagEpcOver= (s, logBaseEpcInfo) -> {
+            log.info("HandlerTagEpcOver:"+s);
+            close(hardware);
+            open(hardware);
+        };
     }
 }

+ 7 - 2
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/WuYuanRFIDServiceImpl.java

@@ -166,7 +166,12 @@ public class WuYuanRFIDServiceImpl implements IService {
     public void setDevice(RemoteLabHardware hardware) {
         Reader reader;
         String ipAddress = hardware.getIpAddress();
-        int uniformPower = Integer.parseInt(hardware.getUniformPower());
+        int power=33;
+        String uniformPower = hardware.getUniformPower();
+        String index = uniformPower.split(",")[0].split(":")[0];
+        if (StringUtils.hasLength(index)){
+            power= Integer.parseInt(index);
+        }
         if (readerMap.containsKey(ipAddress)) {
             reader = readerMap.get(ipAddress);
         } else {
@@ -175,7 +180,7 @@ public class WuYuanRFIDServiceImpl implements IService {
 
         stopMonitor(hardware);
         reader.setOutputPowerUniformly(
-                (byte) Integer.parseInt(Integer.toHexString(uniformPower)),
+                (byte) Integer.parseInt(Integer.toHexString(power)),
                 true,
                 success -> successMsg(success, "设置读写器的射频输出功率"),
                 failure -> errorMsg(failure, (byte) -1, "设置读写器的射频输出功率失败:", hardware));