diff --git a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java index 8ac6966..bc4cc8a 100644 --- a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java +++ b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java @@ -80,6 +80,8 @@ public class ConfigProperties { public static class Rfid { private Long scanTime = 5L; + private String codeType = "ISO18000_6C"; + } @Data diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 7f3cc47..176e08b 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -13,6 +13,7 @@ import com.zhehekeji.web.pojo.CameraPtzPojo; import com.zhehekeji.web.pojo.OrderVO; import com.zhehekeji.web.service.RFID.RFIDMap; import com.zhehekeji.web.service.RFID.RFIDSocket; +import com.zhehekeji.web.service.RFID.RFIDSocketFactory; import com.zhehekeji.web.service.damLightSource.JYDAMEquip; import com.zhehekeji.web.service.damLightSource.JYDamHelper; import com.zhehekeji.web.service.hikLightSource.HikControlSocket; @@ -787,10 +788,10 @@ public class PlcService { tags = RFIDStop(plcCmdInfo); log.info("盘点rfid扫描结果:" + tags); } - if (tags !=null && tags.contains(wmsTrayCode)) { + if (tags !=null && tags.contains(wmsCode)) { //托盘码为空,无货物 //只要扫码枪未识别出条码,即认为盘点正确 - trayCode = wmsTrayCode; + trayCode = wmsCode; trayGoodCheck = Boolean.TRUE; } else { @@ -911,7 +912,8 @@ public class PlcService { public void RFIDStart(String ip, Integer port, Integer streetId, Integer direction) { - RFIDSocket rfidSocket = new RFIDSocket(ip, port); + + RFIDSocket rfidSocket = RFIDSocketFactory.getRFIDSocket(ip, port,configProperties.getRfid().getCodeType()); log.info("rfid调用,ip:" + ip + ";port:" + port); rfidSocket.startCheck(direction, true); RFIDMap.put(streetId, rfidSocket); diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java index 871c471..05cd8a2 100644 --- a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java @@ -1,175 +1,10 @@ package com.zhehekeji.web.service.RFID; -import com.payne.connect.net.NetworkHandle; -import com.payne.reader.Reader; -import com.payne.reader.base.Consumer; -import com.payne.reader.bean.config.AntennaCount; -import com.payne.reader.bean.receive.*; -import com.payne.reader.bean.send.FastSwitchFourAntennaInventory; -import com.payne.reader.bean.send.InventoryConfig; -import com.payne.reader.process.ReaderImpl; -import com.zhehekeji.web.util.ToolUtil; - -import java.util.HashSet; -import java.util.Map; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -public class RFIDSocket { - private String ip; - private int port; - private boolean running; - Reader mReader; - - private Set tags = new HashSet<>(); - - private Map tagsCount = new ConcurrentHashMap<>(); - - public Set getTags() { - return tags; - } - public RFIDSocket(String ip, Integer port) { - this.ip = ip; - this.port = port; - - NetworkHandle handle = new NetworkHandle(ip, (port)); - mReader = ReaderImpl.create(AntennaCount.FOUR_CHANNELS); - - boolean linkSuccess =false; - try { - linkSuccess = mReader.connect(handle); - - }catch (Exception e) { - e.printStackTrace(); - } - if (linkSuccess) { - System.out.println("reader1 connect success"); - } else { - throw new RuntimeException("reader1 connect fail"); - } - - } - - public void startCheck(Integer direction,boolean foreach) { -// Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS); -// Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS); - running = true; - Thread thread = new Thread(new Runnable() { - public void run() { - mReader.setOriginalDataCallback( - new Consumer() { - @Override - public void accept(byte[] onSend) throws Exception { - //System.out.println("---reader 1 send :" + ArrayUtils.bytesToHexString(onSend, 0, onSend.length)); - } - }, - new Consumer() { - @Override - public void accept(byte[] onReceive) throws Exception { - - - } - }); - FastSwitchFourAntennaInventory inventory = new FastSwitchFourAntennaInventory.Builder().build(); - InventoryConfig config = new InventoryConfig.Builder() - .setInventory(inventory) - .setOnInventoryTagSuccess(new Consumer() { - - @Override - public void accept(InventoryTag tag) throws Exception { - System.out.println("reader1 inventory tag :" + tag.getEpc()); - String tagStr = tag.getEpc().replace(" ",""); - System.out.println("tag: " + tag.getEpc()); - tagStr = tagStr.replace("0000000000",""); - tags.add(tagStr); - if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) { - tagsCount.put(tagStr, tagsCount.get(tagStr) + 1); - } else { - tagsCount.put(tagStr, 1); - } - } - }) - .setOnInventoryTagEndSuccess(new Consumer() { - - @Override - public void accept(InventoryTagEnd arg0) throws Exception { -// System.out.println("reader1 InventoryTagEnd"); - } - }) - .setOnFailure(new Consumer() { - - @Override - public void accept(InventoryFailure failure) throws Exception { - System.out.println("reader1 inventory fail :" + (failure.getErrorCode() & 0xFF)); - } - }) - .build(); - mReader.setInventoryConfig(config); - mReader.startInventory(true); - - mReader.setWorkAntenna(direction, - new Consumer() { - @Override - public void accept(Success success) throws Exception { - //切换天线 - //处理成功 - } - }, new Consumer() { - @Override - public void accept(Failure failure) throws Exception { - //处理失败情况 - } - } - ); - byte[] bytes = new byte[1]; - bytes[0] = 0x01; - while (running) { - try { - bytes[0] = (byte) (bytes[0] == 0x01 ? 0x00 : 0x01); - Thread.sleep(1000); - if(foreach){ - mReader.setWorkAntenna(bytes[0],(v)->{ - System.out.println("reader1 setWorkAntenna success"); - },(v)->{ - System.out.println("reader1 setWorkAntenna fail"); - }); - } - } catch (Exception e) { - e.printStackTrace(); - stopCheck(); - } - } - } - - }); - thread.start(); - - } - - public void stopCheck() { - running = false; - System.out.println("reader1 stop"); - if (mReader != null) { - mReader.stopInventory(); - mReader.disconnect(); - } - - } - - public String getTag() { - if (ToolUtil.isNotEmpty(tagsCount)) { - int i = 0; - String tag = ""; - for (String t : tagsCount.keySet()) { - if (i < tagsCount.get(t)) { - tag = t; - i = tagsCount.get(t); - } - } - return tag; - } - return ""; - } - +public interface RFIDSocket { + public void startCheck(Integer direction,boolean foreach); + public void stopCheck(); + public String getTag(); + public Set getTags(); } diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketFactory.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketFactory.java new file mode 100644 index 0000000..96344b8 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketFactory.java @@ -0,0 +1,14 @@ +package com.zhehekeji.web.service.RFID; + +import org.springframework.stereotype.Service; + +@Service +public class RFIDSocketFactory { + public static RFIDSocket getRFIDSocket(String ip, Integer port, String codeType){ + if("ISO18000_6C".equals(codeType)){ + return new RFIDSocketISO6C(ip, port); + }else{ + return new RFIDSocketOld(ip, port); + } + } +} diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketISO6C.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketISO6C.java new file mode 100644 index 0000000..617b3c1 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketISO6C.java @@ -0,0 +1,199 @@ +package com.zhehekeji.web.service.RFID; + +import com.payne.connect.net.NetworkHandle; +import com.payne.reader.Reader; +import com.payne.reader.base.Consumer; +import com.payne.reader.bean.config.AntennaCount; +import com.payne.reader.bean.receive.*; +import com.payne.reader.bean.send.FastSwitchFourAntennaInventory; +import com.payne.reader.bean.send.InventoryConfig; +import com.payne.reader.process.ReaderImpl; +import com.zhehekeji.web.util.ToolUtil; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +public class RFIDSocketISO6C implements RFIDSocket{ + String ip = ""; + int port= 2001; + + private boolean running; + Reader mReader; + + private Set tags = new HashSet<>(); + + private Map tagsCount = new ConcurrentHashMap<>(); + + public Set getTags() { + return tags; + } + public RFIDSocketISO6C(String ip, Integer port) { + + this.ip = ip; + this.port = port; + + NetworkHandle handle = new NetworkHandle(ip, (port)); + mReader = ReaderImpl.create(AntennaCount.FOUR_CHANNELS); + + boolean linkSuccess =false; + try { + linkSuccess = mReader.connect(handle); + + }catch (Exception e) { + e.printStackTrace(); + } + if (linkSuccess) { + System.out.println("reader1 connect success"); + } else { + throw new RuntimeException("reader1 connect fail"); + } + + } + public RFIDSocket getRFIDSocket(String ip, Integer port) { + this.ip = ip; + this.port = port; + + NetworkHandle handle = new NetworkHandle(ip, (port)); + mReader = ReaderImpl.create(AntennaCount.FOUR_CHANNELS); + + boolean linkSuccess =false; + try { + linkSuccess = mReader.connect(handle); + + }catch (Exception e) { + e.printStackTrace(); + } + if (linkSuccess) { + System.out.println("reader1 connect success"); + } else { + throw new RuntimeException("reader1 connect fail"); + } + return this; + + } + + public void startCheck(Integer direction,boolean foreach) { +// Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS); +// Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS); + running = true; + Thread thread = new Thread(new Runnable() { + public void run() { + mReader.setOriginalDataCallback( + new Consumer() { + @Override + public void accept(byte[] onSend) throws Exception { + //System.out.println("---reader 1 send :" + ArrayUtils.bytesToHexString(onSend, 0, onSend.length)); + } + }, + new Consumer() { + @Override + public void accept(byte[] onReceive) throws Exception { + + + } + }); + FastSwitchFourAntennaInventory inventory = new FastSwitchFourAntennaInventory.Builder().build(); + InventoryConfig config = new InventoryConfig.Builder() + .setInventory(inventory) + .setOnInventoryTagSuccess(new Consumer() { + + @Override + public void accept(InventoryTag tag) throws Exception { + System.out.println("reader1 inventory tag :" + tag.getEpc()); + String tagStr = tag.getEpc().replace(" ",""); + System.out.println("tag: " + tag.getEpc()); + tagStr = tagStr.replace("0000000000",""); + tags.add(tagStr); + if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) { + tagsCount.put(tagStr, tagsCount.get(tagStr) + 1); + } else { + tagsCount.put(tagStr, 1); + } + } + }) + .setOnInventoryTagEndSuccess(new Consumer() { + + @Override + public void accept(InventoryTagEnd arg0) throws Exception { +// System.out.println("reader1 InventoryTagEnd"); + } + }) + .setOnFailure(new Consumer() { + + @Override + public void accept(InventoryFailure failure) throws Exception { + System.out.println("reader1 inventory fail :" + (failure.getErrorCode() & 0xFF)); + } + }) + .build(); + mReader.setInventoryConfig(config); + mReader.startInventory(true); + + mReader.setWorkAntenna(direction, + new Consumer() { + @Override + public void accept(Success success) throws Exception { + //切换天线 + //处理成功 + } + }, new Consumer() { + @Override + public void accept(Failure failure) throws Exception { + //处理失败情况 + } + } + ); + byte[] bytes = new byte[1]; + bytes[0] = 0x01; + while (running) { + try { + bytes[0] = (byte) (bytes[0] == 0x01 ? 0x00 : 0x01); + Thread.sleep(1000); + if(foreach){ + mReader.setWorkAntenna(bytes[0],(v)->{ + System.out.println("reader1 setWorkAntenna success"); + },(v)->{ + System.out.println("reader1 setWorkAntenna fail"); + }); + } + } catch (Exception e) { + e.printStackTrace(); + stopCheck(); + } + } + } + + }); + thread.start(); + + } + + public void stopCheck() { + running = false; + System.out.println("reader1 stop"); + if (mReader != null) { + mReader.stopInventory(); + mReader.disconnect(); + } + + } + + public String getTag() { + if (ToolUtil.isNotEmpty(tagsCount)) { + int i = 0; + String tag = ""; + for (String t : tagsCount.keySet()) { + if (i < tagsCount.get(t)) { + tag = t; + i = tagsCount.get(t); + } + } + return tag; + } + return ""; + } + + +} diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java index a3cba21..7ab4608 100644 --- a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java @@ -2,6 +2,9 @@ package com.zhehekeji.web.service.RFID; import com.module.interaction.RXTXListener; import com.module.interaction.ReaderHelper; +import com.payne.connect.net.NetworkHandle; +import com.payne.reader.bean.config.AntennaCount; +import com.payne.reader.process.ReaderImpl; import com.rfid.RFIDReaderHelper; import com.rfid.ReaderConnector; import com.rfid.rxobserver.RXObserver; @@ -15,7 +18,7 @@ import java.util.Observer; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -public class RFIDSocketOld { +public class RFIDSocketOld implements RFIDSocket { private String ip; private int port; private ReaderHelper mReaderHelper; @@ -28,6 +31,12 @@ public class RFIDSocketOld { public Set getTags(){ return tags; } + public RFIDSocket getRFIDSocket(String ip, Integer port){ + mReaderConnector = new ReaderConnector(); + mReaderHelper = mReaderConnector.connectNet(ip, port); + return this; + } + private Observer mObserver = new RXObserver() { @@ -121,8 +130,8 @@ public class RFIDSocketOld { ((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x01); } //开始盘存180006B - //((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF); - ((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A); + ((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF); + //((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A); // i++; Thread.sleep(70); } @@ -139,6 +148,11 @@ public class RFIDSocketOld { thread.start(); } + @Override + public void startCheck(Integer direction, boolean foreach) { + startCheck( direction); + } + public void stopCheck(){ running = false; if (mReaderConnector.isConnected()){ diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index 0404d58..0cc6d0e 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -94,4 +94,8 @@ scanCodeMode: trayCodeTypes: - 14 # 照片 視頻保存多久 -deleteFileDays: 365 \ No newline at end of file +deleteFileDays: 365 + +rfid: + codeType: ISO18000_6C + scanTime: 2 \ No newline at end of file