rfid放开多种编码编写

rfid采用code
滁州-烟草
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 2b0bf803f3
commit 9f0435dbc7

@ -80,6 +80,8 @@ public class ConfigProperties {
public static class Rfid {
private Long scanTime = 5L;
private String codeType = "ISO18000_6C";
}
@Data

@ -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);

@ -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<String> tags = new HashSet<>();
private Map<String, Integer> tagsCount = new ConcurrentHashMap<>();
public Set<String> 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<byte[]>() {
@Override
public void accept(byte[] onSend) throws Exception {
//System.out.println("---reader 1 send :" + ArrayUtils.bytesToHexString(onSend, 0, onSend.length));
}
},
new Consumer<byte[]>() {
@Override
public void accept(byte[] onReceive) throws Exception {
}
});
FastSwitchFourAntennaInventory inventory = new FastSwitchFourAntennaInventory.Builder().build();
InventoryConfig config = new InventoryConfig.Builder()
.setInventory(inventory)
.setOnInventoryTagSuccess(new Consumer<InventoryTag>() {
@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<InventoryTagEnd>() {
@Override
public void accept(InventoryTagEnd arg0) throws Exception {
// System.out.println("reader1 InventoryTagEnd");
}
})
.setOnFailure(new Consumer<InventoryFailure>() {
@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<Success>() {
@Override
public void accept(Success success) throws Exception {
//切换天线
//处理成功
}
}, new Consumer<Failure>() {
@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<String> getTags();
}

@ -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);
}
}
}

@ -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<String> tags = new HashSet<>();
private Map<String, Integer> tagsCount = new ConcurrentHashMap<>();
public Set<String> 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<byte[]>() {
@Override
public void accept(byte[] onSend) throws Exception {
//System.out.println("---reader 1 send :" + ArrayUtils.bytesToHexString(onSend, 0, onSend.length));
}
},
new Consumer<byte[]>() {
@Override
public void accept(byte[] onReceive) throws Exception {
}
});
FastSwitchFourAntennaInventory inventory = new FastSwitchFourAntennaInventory.Builder().build();
InventoryConfig config = new InventoryConfig.Builder()
.setInventory(inventory)
.setOnInventoryTagSuccess(new Consumer<InventoryTag>() {
@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<InventoryTagEnd>() {
@Override
public void accept(InventoryTagEnd arg0) throws Exception {
// System.out.println("reader1 InventoryTagEnd");
}
})
.setOnFailure(new Consumer<InventoryFailure>() {
@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<Success>() {
@Override
public void accept(Success success) throws Exception {
//切换天线
//处理成功
}
}, new Consumer<Failure>() {
@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 "";
}
}

@ -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<String> 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()){

@ -95,3 +95,7 @@ scanCodeMode:
- 14
# 照片 視頻保存多久
deleteFileDays: 365
rfid:
codeType: ISO18000_6C
scanTime: 2
Loading…
Cancel
Save